用户:
Python-happyyyy查看:316 回复:14 评论:57 创建时间:2021-07-09T16:47:35
大家对GUI编程有怎样的看法?
评论区留言
提前声明:勿引战,请文明交流
其他的就不一一再说了
Python-happyyyy我个人是认为GUI编程很烦
所以才发这个想看看有没有和我一样的人
因为如果做一个大项目,仅仅函数占了很多,再加上GUI的布局,功能什么什么的
这个项目就会很长
找BUG会有些困难
点赞2
评论
当然也有试过其他语言,结果也是一样
讨厌GUI的+1
我觉得语言最简单莫过于设计ui了
正因为简单,代码才会长
长而简单,我最喜欢!
但是看着很乱……
简单是简单,一行一setting,个性配置,但行数让人怀疑人生。。。(短而精髓,我最喜欢
你这不谐音呀(特殊关注点doge
狗头喵.jpg
咋了,叫我
就是想赞一下
e。
讨厌GUI,因为GUI编程太麻烦,代码不简洁
真要说那个好的话,python的GUI算是最舒服的,还比较简洁,java的javafx也还好,但是java的awt和swing是真的拉
点赞2
评论
对fx还行
你学过java?
不然哩
《关于我来编程猫朋友连我学过Java都不知道这档事》
az,我该说什么?
力挺PythonGUI
PyQt真心不戳
但c++原生qt方言。。。那个。。。
pyside一堆函数名,花里胡哨,弄得人眼花缭乱,到现在还是很难独立搞一个ui得借助qt creator,我感觉tkinter比pyside整洁和方便和简单呢
我个人特别喜欢qt的命名风格,感觉很接近自然语言,qtcreator一般不用的,感觉会大大限制创造力
《大爱Qt》
Qt比起TK、WX、kivy开发体验优势明显的主要是样式逻辑分离,用css写样式也对前端的很友好
az
有的人看看tk就走了,有的人遇到了tk爱上了tk,决定真正入坑在这里(狗头
我选择入坑qt
道不同,不相逢(dogeeeee.png+滑稽.jpg
话说我已经开始看jfx教程了,第一眼就爱了(
我写过一个jfx的音乐播放器,你要不?
要诶要诶QwQ
我也要awa
Albert钟尽量避免写非原生GUI,能用Html绝不用GUI。Python写GUI最舒服,但还是没有html简介(个人喜欢Qt),Js的electron看了想吐,C++的任何UI类库或方言都让人怀疑人生,其他语言的不了解。
点赞3
评论
《简 介》
简洁。。。。
???????
伴雪纷飞其实嘛,py的ui也不是传说中的十全十美,网上有句话叫:Python永远要依靠别的库来扩展自身
对呀看看不管是wx还是qt都需要
tkinter入坑多年早就感觉不行了,想转
但是qt第一点复杂
第二点(感觉描述不清)用过tkinter都知道tk有ttk,tix,对比起来...
wx没啥说的(实则根本不熟)
个人感觉,用web框架,html5渲染界面(实则本人还是用tkinter)
点赞0
评论
啥东西,我之前写了啥东西(
hhh
package javafxtest;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
public class Main extends Application{
private boolean isPlaying = true;
private int pointer = 0;
private List<MediaPlayer> medias = new ArrayList<MediaPlayer>();
private MediaView mediaView = new MediaView();
private Properties properties;
private class OverListener implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
// System.out.println("Done.");
// isPlaying = false;
System.out.println("Done.");
System.out.println(pointer);
System.out.println();
load();
}
}
@Override
public void start(Stage primaryStage) throws Exception {
// TODO Auto-generated method stub
// Media pick = new Media("file:////D://playerTest.wav"); // replace this with your own audio file
// MediaPlayer player = new MediaPlayer(pick);
// player.setOnEndOfMedia(new OverListener());
// // A喵 a mediaView, to display the media. Its necessary !
// // This mediaView is a喵ed to a Pane
loadProperties();
loadMedias();
// A喵 to scene
//mediaView.setMediaPlayer(medias.get(pointer));
Button pause = new Button();
pause.setGraphic(new ImageView("file:////D://pause.jpg"));
pause.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
System.out.println("Pause button clicked!");
changePlayState(!isPlaying);
}
});
Group root = new Group(mediaView);
StackPane stackPane = new StackPane();
stackPane.getChildren().a喵(root);
stackPane.getChildren().a喵(pause);
Scene scene = new Scene(stackPane, 500, 200);
// Show the stage
primaryStage.setTitle("Media Player");
primaryStage.setScene(scene);
primaryStage.show();
medias.get(0).play();
isPlaying = true;
}
@Override
public void stop() throws Exception {
// TODO Auto-generated method stub
// FileWriter writer = new FileWriter("D://player.txt");
// writer.append(Integer.toString(pointer));
// writer.append("\r\n");
// writer.close();
System.out.println("stop invoked.");
properties.setProperty("player.pointer", Integer.toString(pointer));
saveProperties();
super.stop();
}
private void loadMedias() throws Exception{
pointer = Integer.parseInt(properties.getProperty("player.pointer"));
System.out.println("Loaded Pointer: "+pointer);
double volume = Double.parseDouble(properties.getProperty("player.volume"));
System.out.println("Loaded volume: "+volume);
String dirString = properties.getProperty("player.dir");
File dir = new File(dirString);
for(File song : dir.listFiles()) {
String songPath = dirString+"/"+song.getName();
Media media = new Media("file:////"+songPath);
MediaPlayer player = new MediaPlayer(media);
player.setOnEndOfMedia(new OverListener());
player.setVolume(volume);
medias.a喵(player);
System.out.println("Loaded music: "+songPath);
}
MediaPlayer firstPlayer = medias.get(pointer);
mediaView.setMediaPlayer(firstPlayer);
System.out.println(firstPlayer.getMedia().getSource());
}
private void loadProperties() throws Exception{
properties = new Properties();
InputStream is = new FileInputStream("D://player.properties");
properties.load(is);
is.close();
}
private void saveProperties() throws Exception{
OutputStream os = new FileOutputStream("D://player.properties");
properties.store(os, "");
os.close();
}
private void load() {
pointer++;
if(pointer > medias.size()) {
pointer = 0;
}
MediaPlayer player = medias.get(pointer);
System.out.println("Play Music: "+player.getMedia().getSource());
mediaView.setMediaPlayer(player);
player.play();
}
private void changePlayState(boolean state) {
MediaPlayer player = medias.get(pointer);
if(state) {
System.out.println("Change state: pause.");
player.pause();
}else {
System.out.println("Change state: play.");
player.play();
}
isPlaying = state;
}
public static void main(String[] args) {
launch(args);
}
}
点赞1
评论
你们要的jfx播放器,就是写着玩的,也没怎么优化,启动内存直接爆炸
谢谢哦
我谢谢你。。。
谢谢(⌒▽⌒)