
漂亮这个定义要看你的风格和品位。
Tkinter:Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里,Tk80的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。个人感觉Tkinter的界面较为简陋,即使是用了扩展的ttk也没办法弥补。但好处是代码较为简洁,易于理解。
wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能键全的 GUI 用户界面。
PyQt:是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是目前最强大的库之一。PyQt是由Phil Thompson 开发。个人推荐,有QT designer可以辅助开发,很方便。
Jython:Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。比如,Jython的用户界面将使用Swing,AWT或者SWT。Jython可以被动态或静态地编译成Java字节码。Jython可以调用java程序,java能写出多漂亮的界面,Jython基本都可以应用
Windows软件开发,不仅有C/C++、还有Java、C#,甚至JavaScript也加入了桌面应用开发的阵营
C++方向
作为一名主业为C++的开发工程师,当然是首推C++了,用它来写Windows软件,还是很香的,这里重点推荐两个界面库。
Qt
这个也是C++界面开发首推的UI库,是一套跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序。文档齐全,API设计优雅,原生态跨平台支持,在国产化盛行的今天,相信Qt的市场也会越来越广阔。Qt新版本提供的QSS可以让你像Web当中CSS那样优雅的写界面布局代码。
下图是使用Qt内置的QSS绘制的一个界面换肤效果图,还是很绚丽的(PS:作品来源于CSDN,博主:一去丶二三里,如有侵权,请随时联系)。
MFC
虽然业界流传MFC=没饭吃、MFC要淘汰了但是这么多年过去了,这玩意还是没有淘汰,只能说是落幕了,需求越来越少(然鹅,并没有绝迹)。
如果题主的需求是做一些自用的小工具,如果界面要求不是很高的话,那么选用基于MFC的Dialog对话框模式还是很方便的。无论是自用或者是他用,简单的将静态编译完成的exe发送给其他人就可使用,不用过多的依赖库。
温馨提示:
如果是选择就业方向的话,不建议选择MFC。
C#方向
微软主推的编程语言,与宇宙第一IDEVisualStudio配合的天衣无缝,通过简单的拖拽即可完成界面元素的布局。仿Java而生,目的就是取代Java,然而其结果是显而易见的,PC端程序开发已经落幕,在Web端,C#似乎跟Java不在一个重量级上。
考虑到微软的技术更新换代实在太快了,比如WinForm和WPF被全面移植到NETCore。在这5G时代、人工智能、大数据各种浪潮的年代,实在没有必要再去追逐微软了。
JavaScript方向
考虑到题主的语言技术栈,主要偏向Web方向,开发Windows软件的话,隆重推荐下Electron。可以让你使用纯JavaScript调用丰富的原生( *** 作系统)APIs来创造桌面应用,大名鼎鼎的VSCode、Atom就是使用该开源库来完成的。让人们感觉JS真的有一统天下的趋势(Web、移动端、PC客户端)。
至于Java、PyQt之流,这里就不再推荐了。毕竟Python的设计初衷就不是让你来写Windows客户端开发的,而Java,重心也早已转移到Web端和移动端了,JavaSE开发的客户端程序已经很少见了。
有很多可以用,最流行的几个是:
tkinter, python 自带的,跨平台 GUI包, 你可以去优酷(莫烦 tkinter) 学习下怎么用 tkinter
pyqt, 这个是可以用起来简单一点,但是学起来可能要花点时间
Kivy, 这个还可以编安卓的哦
可以生成GUI的语编程语言有很多,GUI是图形用户接口的通称,你可以用汇编、C、C++,basic,VB,VC++,JAVA等写出图形界面的应用程序。
用C++写图形界面是比较困难,界面上的任何图形都需要做多次处理,如用BMP就很麻烦。但可以使用集成的开发环境,如VC++就会好一些,当然用BC++也可以。这个要看个人的使用习惯了。
/ 原始分为16块第一块为 空白
我是这样想的:
因为无法将分成15份而放到16块的区域中(至少是很难实现)
因此将原始中一部分处理成白色,这样就好处理了
/
import javaawtGraphics;
import javaawtGridLayout;
import javaawtImage;
import javaawtMediaTracker;
import javaawteventMouseEvent;
import javaawteventMouseListener;
import javaawtimageBufferedImage;
import javautilHashSet;
import javautilIterator;
import javautilRandom;
import javautilSet;
import javaxprintattributestandardMedia;
import javaxswingAbstractButton;
import javaxswingIcon;
import javaxswingImageIcon;
import javaxswingJButton;
import javaxswingJFrame;
public class Pintu extends JFrame implements MouseListener{
int currx,curry,cx,cy;
Image img,whiteimg;
Icon img1;
Icon currIcon;
BufferedImage bimg,white;
BufferedImage[][] subimg;
int width,height;
JButton[][] jb;
public Pintu(){
thissetLayout(new GridLayout(4,4));
img=thisgetToolkit()getImage("E:\\1jpg");
whiteimg=thisgetToolkit()getImage("E:\\2jpg");
MediaTracker me=new MediaTracker(this);
meaddImage(img, 0);
try {
mewaitForAll(0);
} catch (InterruptedException e) {
// TODO 自动生成 catch 块
eprintStackTrace();
}
width=imggetWidth(this);
height=imggetHeight(this);
bimg=new BufferedImage(width,height,BufferedImageTYPE_INT_ARGB);
Graphics bg=bimggetGraphics();
bgdrawImage(img,0,0,this);
subimg=new BufferedImage[4][4];
int a[] = new int[4];
for (int i = 0; i < alength; i++) {
a[i] = (int) (Mathrandom() 4) ;
for (int k = 0; k < i; k++) {
if (a[i] == a[k]) {
i--;
continue;
}
}
}
for(int x=0;x<4;x++){
for(int y=0;y<4;y++)
subimg[a[x]][a[y]]=bimggetSubimage(widthx/4, heighty/4, width/4, height/4);
}
currx=a[0];curry=a[0];
white=subimg[currx][curry];
jb=new JButton[4][4];
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
jb[i][j]=new JButton();
jb[i][j]addMouseListener((MouseListener) this);
thisadd(jb[i][j]);
jb[i][j]setIcon(new ImageIcon(subimg[i][j]));
}
}
setSize(imggetWidth(this),imggetHeight(this));
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
/public void paint(Graphics g){
gdrawImage(subimg[0],0,0,this);
}/
public static void main(String[] args) {
new Pintu();
}
public void mouseClicked(MouseEvent e) {
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
if(((AbstractButton)egetSource())==jb[i][j]){cx=i;cy=j;}
if(((cx==currx)&&(((cy-curry)==1)||((curry-cy)==1)))||((cy==curry)&&(((cx-currx)==1)||((currx-cx)==1))))
{
Systemoutprintln(""+cx+" "+cy);
currIcon=jb[cx][cy]getIcon();
jb[cx][cy]setIcon(new ImageIcon(white));
jb[currx][curry]setIcon(currIcon);
currx=cx;curry=cy;
}
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
}
就是照着你说的那个改的。。。。效果图如下:
我知道的就是第一,做出来的东西不好看,想要好看点要费更多功夫。第二,效率很低,一个button在内存中站很大地方,java还有自己的垃圾回收机制,程序会越跑越快慢。第三,市场占有太低,java的优点是跨平台,所以大多数人都把精力放在跨平台这个优点上,GUI多数都是在windows上运行,c++优势特大。
VS只是开发工具,写GUI,c++调用相关GUI类库就行了。
标准wendows下的是WFC,跨 *** 作系统的图形类库很多,象QT、wxWindows等等。
写GUI和哪个软件开发也没有什么关系,就是写字本写了,然后命令行编译一样可以。
使用Qt进行软件开发,不可避免要使用资源文件。本节我们做一个简单示例,通过使用Qt资源文件为应用程序及关闭按钮设置图标。
根据前面我们所讲述的内容,先创建PyCharm工程项目,然后创建Qt工程项目,在Qt工程项目中设计界面并创建资源文件。
界面中我们只放置一个“关闭”按钮,所以在此不做具体的描述。下面,我们创建资源文件。
在Qt Creator中选择“File” -> "New File or Project",然后选择“Qt”->"Qt Resource File",在File name中输入res,在项目中可以看到,我们创建了一个resqrc资源文件。
在资源文件上右击,选择”Open in Editor“即可打开资源文件编辑器。
在资源文件中首先需要创建一个前缀,名称可以根据具体的资源进行命名,我们在此处命名为:icons;然后单击”Add Files“,选择事先准备好的图标文件添加进来。
在按钮的属性编辑器中找到icon属性,点击下拉菜单中的”Choose Resource“,在对话框中选择对应的资源文件中的图标即可。
编译资源文件:
在PyCharm的工程项目中创建一个名为rccbat的批处理文件,其代码如下:
注意:编译资源文件时,生成的py文件名结尾必须是_rc,因为编译窗体文件后会产生如下语句:
编译窗体文件:
在PyCharm的工程项目中创建一个名为uicbat的批处理文件,其代码如下:
运行以上两个批处理文件,可以看到编译后的py文件已经生成。
执行程序后可以看到,界面中的关闭按钮显示了我们在Qt Creator中设置的图标。
引入图标类:
在主程序中app = QApplication(sysargv)语句后面增加设置图标的代码:
为”关闭“按钮添加单击事件代码:
运行程序即可看到应用程序的图标也可以显示了。
以上就是关于python开发的gui漂亮吗全部的内容,包括:python开发的gui漂亮吗、如何开发一个windows软件,需要用哪些语言、Python开发GUI应用程序,用哪个设计工具好等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)