Форум программистов, компьютерный форум, киберфорум
Rust
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
4 / 4 / 0
Регистрация: 02.05.2021
Сообщений: 3
1

GUI. Порекомендуйте

02.05.2021, 09:51. Показов 4286. Ответов 9
Метки gui, rust (Все метки)

Author24 — интернет-сервис помощи студентам
порекомендуйте gui.
без qt, gtk и c++
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2021, 09:51
Ответы с готовыми решениями:

Порекомендуйте Lisp для создания Windows-приложений с GUI
Разновидность языка (CL/Scheme/Racket/ISLISP...) значения не имеет. Главное, чтобы умел...

Порекомендуйте пожалуйста книги по GUI программированию на Matlab
так же интересует вопрос о запуске созданных в matlab gui приложений на машине, где не установлен...

Как запустить qt gui программу, как демон, без gui, скрыв gui?
Как запустить qt gui программу, как демон, без gui, скрыв gui? В gui браузер выполняет...

Как нарисовать в gui из подгружаемой функции или передать точки в gui
Добрый день! Помогите разобраться, пожалуйста. Есть gui, где я рисую всякие графики такой...

9
Модератор
5047 / 3276 / 526
Регистрация: 01.06.2013
Сообщений: 6,806
Записей в блоге: 9
02.05.2021, 12:48 2
Тут бы нормальный GUI в виде обёртки над C/C++ найти, или хотя бы простой и не тормозной html-based.
А вы хотите GUI с нуля написанный на rust.

Когда то пробовал https://github.com/pistondevelopers/conrod
Ещё можете посмотреть https://github.com/emilk/egui

Но рекомендовать нечего. Везде сырое, без нормальной документации.

Я бы сам был рад если бы кто-нибудь предложил бы что то доделанное.
3
4 / 4 / 0
Регистрация: 02.05.2021
Сообщений: 3
03.05.2021, 05:44  [ТС] 3
Curry, я это явно был слишком оптимистичен.
относительно нормальные на rust есть только над gtk.

p.s. обзор https://dev.to/davidedelpapa/r... -2021-40gl
1
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
04.05.2021, 16:52 4
Curry, cehod, я бы сказал, смотря какие у вас задачи.

В своё время перебрал всё из are we gui yet и ещё парочку нашёл. Всё что видел однозначно сырое, но если чётко определить цели, можно выделить пару тройку подходящих вариантов. Так как я искал GUI, который позволил бы сделать полноценную игру, при этом не отжирая всё процессорное время, я осталовился на fltk. Да, это С++ библиотека и на Rust есть только обвязка вокруг неё, но моим целям соответствовала вполне.

Изначально я остановился на druid, так как ещё раньше разбирался с ним, но, помимо малой библиотеки widget-ов, он всё ещё на стадии concept proof, что-ли. Например, прохода дерева widget-ов для определения места которое изменилось так либо нет, либо сделано коряво на столько, что можно утверждать что его нет. Когда у вас несколько сотен widget-ов на форме, придётся ждать отрисовки всего одна, даже если изменилась надпись на одной кнопке. Преславутый data driven, хотя и кажется хорошим, но далеко не лишен недостатков. С точки зрения польвателя библиотеки, могут возникнуть проблемы глобальным состоянием приложения. Линзы это конечно хорошо, но когда стают вопросы общего доступа и обмена сообщениями, пользователи ощутят определённую боль.

Всё то, что занимается отрисовкой html меня не интересовало, по определению, из-за требований к производительсти. Мол чтобы GUI работал как GUI, переиодически просыпаясь для перерисовки частей окна или обработки сообщений от ОСи а не запускал бесконечный цыкл в надежде что ему дадут 1000 FPS выдать. Fltk в этом плане ближе всех к native (аля WinApi), решениям по загрузке CPU.
2
4 / 4 / 0
Регистрация: 02.05.2021
Сообщений: 3
05.05.2021, 19:26  [ТС] 5
я бы выделил из кроссплатформенных(и запускались без особых проблем):
iui - "win32API on Windows, Cocoa on Mac OS X, and GTK+ on Linux"
tauri - альтернатива электрону. Windows/Mac OS/Linux.
fltk-rs - Windows/Mac OS/Linux/Android.

outoftime, fltk-rs выглядит наиболее зрелой.(при том что там только 1 разработчик)
2
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
13.05.2021, 06:43 6
cehod, опять таки, это не совсем однозначно. Многие используют wgpu для отрисовки, а он поддерживает только Vulkan (всё что кроме у меня не работало, везде есть косяки). Да, некоторые решения лучше, некоторые хуже, но я, пока что, останусь при своём мнении.

Очень хочу чтобы меня разубедили.
1
Заблокирован
18.05.2021, 15:56 7
> без qt, gtk и c++

Такого не существует, очевидно. Я не знаю, что ты хочешь от поехавших, которые даже компилятор для своего языка родить не смогла, выкатив вместо этого убогийй огрызок фронта к llvm. Никогда там не будет "без c++". Биндинги к сишному коду - единственный путь для недоязычка.
0
Просто Лис
Эксперт Python
5731 / 3530 / 1055
Регистрация: 17.05.2012
Сообщений: 10,359
Записей в блоге: 9
23.05.2021, 14:55 8
Код
# apt install libncurses5-dev libncursesw5-dev
cursive = "0.16.3"
Не знаю, заведётся ли под виндой.

Или возьми веб-интерфейс: https://rocket.rs/ - кое-чего не хватает, но жить можно.
0
Пора на C++?
370 / 264 / 99
Регистрация: 10.04.2020
Сообщений: 1,275
31.05.2021, 22:11 9
cehod, под Windows есть такая удобная обёртка на WinAPI: native-windows-gui. Не отличается разнообразием графических компонентов, но для базовых нужд хватит.
0
1389 / 530 / 67
Регистрация: 10.04.2009
Сообщений: 8,715
15.09.2022, 17:19 10
подскажите, а все примеры гуя в онлайн редакторе: https://www.onlinegdb.com/ будут работать?
я пробовал:
Код
// Copyright © SixtyFPS GmbH <info@slint-ui.com>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-commercial

#[cfg(target_arch = "wasm32")]
use wasm_bindgen::prelude::*;

use slint::Model;
use std::rc::Rc;

slint::include_modules!();

/// Returns the current time formated as a string
fn current_time() -> slint::SharedString {
    #[cfg(not(target_arch = "wasm32"))]
    return chrono::Local::now().format("%H:%M:%S %d/%m/%Y").to_string().into();
    #[cfg(target_arch = "wasm32")]
    return "".into();
}

struct PrinterQueueData {
    data: Rc<slint::VecModel<PrinterQueueItem>>,
    print_progress_timer: slint::Timer,
}

impl PrinterQueueData {
    fn push_job(&self, title: slint::SharedString) {
        self.data.push(PrinterQueueItem {
            status: "WAITING...".into(),
            progress: 0,
            title,
            owner: env!("CARGO_PKG_AUTHORS").into(),
            pages: 1,
            size: "100kB".into(),
            submission_date: current_time(),
        })
    }
}

#[cfg_attr(target_arch = "wasm32", wasm_bindgen(start))]
pub fn main() {
    // This provides better error messages in debug mode.
    // It's disabled in release mode so it doesn't bloat up the file size.
    #[cfg(all(debug_assertions, target_arch = "wasm32"))]
    console_error_panic_hook::set_once();

    let main_window = MainWindow::new();
    main_window.set_ink_levels(slint::VecModel::from_slice(&[
        InkLevel { color: slint::Color::from_rgb_u8(0, 255, 255), level: 0.40 },
        InkLevel { color: slint::Color::from_rgb_u8(255, 0, 255), level: 0.20 },
        InkLevel { color: slint::Color::from_rgb_u8(255, 255, 0), level: 0.50 },
        InkLevel { color: slint::Color::from_rgb_u8(0, 0, 0), level: 0.80 },
    ]));

    let default_queue: Vec<PrinterQueueItem> =
        main_window.global::<PrinterQueue>().get_printer_queue().iter().collect();
    let printer_queue = Rc::new(PrinterQueueData {
        data: Rc::new(slint::VecModel::from(default_queue)),
        print_progress_timer: Default::default(),
    });
    main_window.global::<PrinterQueue>().set_printer_queue(printer_queue.data.clone().into());

    main_window.on_quit(move || {
        #[cfg(not(target_arch = "wasm32"))]
        std::process::exit(0);
    });

    let printer_queue_copy = printer_queue.clone();
    main_window.global::<PrinterQueue>().on_start_job(move |title| {
        printer_queue_copy.push_job(title);
    });

    let printer_queue_copy = printer_queue.clone();
    main_window.global::<PrinterQueue>().on_cancel_job(move |idx| {
        printer_queue_copy.data.remove(idx as usize);
    });

    let printer_queue_weak = Rc::downgrade(&printer_queue);
    printer_queue.print_progress_timer.start(
        slint::TimerMode::Repeated,
        std::time::Duration::from_secs(1),
        move || {
            if let Some(printer_queue) = printer_queue_weak.upgrade() {
                if printer_queue.data.row_count() > 0 {
                    let mut top_item = printer_queue.data.row_data(0).unwrap();
                    top_item.progress += 1;
                    top_item.status = "PRINTING".into();
                    if top_item.progress > 100 {
                        printer_queue.data.remove(0);
                        if printer_queue.data.row_count() == 0 {
                            return;
                        }
                        top_item = printer_queue.data.row_data(0).unwrap();
                    }
                    printer_queue.data.set_row_data(0, top_item);
                } else {
                    // FIXME: stop this timer?
                }
            }
        },
    );

    main_window.run();
}
получил море ошибок......
0
15.09.2022, 17:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2022, 17:19
Помогаю со студенческими работами здесь

[ubuntu] Как запустить qt-gui программу без gui-интерфейся из консоли?
Как запустить qt-gui программу без gui-интерфейса из консоли?

Как запустить GUI приложение (например, notepad.exe) без отображения GUI?
Добрый день. Интересует есть ли такая возможность, как запустить GUI приложение (например,...

LWJGL+ GUI - Выход из рендерного цикла для работы в GUI без потери окна
Всем привет! Учусь использовать OpenGL в Java. И у меня возникла небольшая проблемка, окно LWJGL...

LWJGL и GUI - Выход из рендерного цикла для роботы в GUI без потери окна
Всем привет! Учусь использовать OpenGL в Java. И у меня возникла небольшая проблемка, окно LWJGL...

Как лучше и быстрее из SQL в QVector и в GUI или сразу из SQL в GUI
Доброе время суток! Ну собственно вопрос в теме, как лучше сделать. Сначала прочитать SQLite в...

Порекомендуйте
Порекомендуйте программу для создания инсталлиционных пакетов кроме Setup factory.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru