用户:
Python-happyyyy查看:57 回复:14 评论:57 创建时间:2021-07-09T16:47:35
大家对GUI编程有怎样的看法?
评论区留言
提前声明:勿引战,请文明交流
其他的就不一一再说了
Python-happyyyy我个人是认为GUI编程很烦
所以才发这个想看看有没有和我一样的人
因为如果做一个大项目,仅仅函数占了很多,再加上GUI的布局,功能什么什么的
这个项目就会很长
找BUG会有些困难
点赞2
评论
讨厌GUI,因为GUI编程太麻烦,代码不简洁
真要说那个好的话,python的GUI算是最舒服的,还比较简洁,java的javafx也还好,但是java的awt和swing是真的拉
点赞2
评论
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
评论
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
评论