PYQT写的程序如何在其他计算机运行
步骤如下:在开始菜单所有应用中找到PyQt文件夹下的Designer,双击打开。
新建窗体对话框选择“Dialog without Buttons”,点击创建按钮。
在左侧控件栏中拖入一个Label和一个Line Edit并将其选中后进行拖动复制位三个。
再从左侧拖入一个 PushButton按钮。
双击Label和PushButton控件,输入名称,使其符合要求。
分别选中单个控件,在右侧属性栏中修改其属性,并摆放好大致位置。
修改属性应包括给控件一个见名知意的对象名称;密码Line Edit控件的echoMode属性的值设置为Password,即不可见;精确调整控件大小和摆放位置,使之对齐等等(摆放位置亦可通过下述的“布局”进行对齐)。
单击菜单栏的Edit,编辑Tab顺序,从上到下依次是1,2,3,4。
从左侧拖入一个Horizontal Spacer控件置于PushButton控件同行左侧,并修改使其长度适宜。
分别选择位于同一行的控件并点击“窗口”中的“水平布局”,最后选中所有,点击“窗口”下拉菜单下的“垂直布局”。
选中所有,并“栅格布局”和调整对话框到合适大小,结果如下。
切换到“编辑信号/槽”模式,拖动确定到空白位置。
在弹出的“配置连接”对话框中左选择“clicked()”,右选择“accept()”。
保存为ui文件,不妨命名为test。
终端下使用盘符和cd命令进入到ui文件所在的位置。
需要注意的是,进入位置需要分两步走。
例如ui保存在 C:/savehere/,而当前的目录是在D:/,则我们要命令提示符窗口运行C:和cd C:/savehere/,不区分先后顺序。
进入目录后,使用pyuic4工具进行转化,具体敲pyuic4 test.ui -o test.py,并回车。
右键点击在test.ui相同目录下生成test.py,选择Edit with IDLE。
就可看到代码。
pyqt5如何做正则表达式验证软件
展开全部 首先,我照着前面提到的网页,大致画了个界面,包括三个 checkBox、两个 textEdit 和两个 label,分别放在三个 layout 里面大概就是下面这个界面: 保存后会得到一个扩展名为 .ui 的文件。
比如我得到了一个 RegexTester.ui。
然后打开 cmd 命令行,切换到当前目录,输入以下命令: pyuic4 -o regexTesterUi.py RegexTester.ui,回车,就能根据画好的 ui 文件生成一个 py 文件。
这时可以写一个测试脚本来运行一下这个界面。
1 from PyQt4.QtGui import * 2 from PyQt4.QtCore import * 3 import sys 4 import regexTesterUi 5 6 class TestDialog(QDialog,regexTesterUi.Ui_Dialog): 7 def __init__(self,parent=None): 8 super(TestDialog,self).__init__(parent) 9 self.setupUi(self)10 11 if __name__ == '__main__':12 app=QApplication(sys.argv)13 dialog=TestDialog()14 dialog.show()15 app.exec_() 运行这个脚本,我们就可以得到刚才画的那个 GUI 界面,并且可以选中三个 checkBox ,在两个 textEdit 里面输入文本。
只是除此之外没有任何功能。
现在界面已经做好,我们需要做的就是实现高亮匹配数据的功能。
首先我们来完善一下这个类,我们需要的变量为输入的正则表达式、输入的测试数据、三个匹配模式(大小写敏感、多行匹配、点匹配所有)。
1 class RegexTesterDialog(QtGui.QDialog, regexTesterUi.Ui_Dialog): 2 3 def __init__(self, parent = None): 4 super(RegexTesterDialog, self).__init__(parent) 5 6 self.CI = False # case insensitive (i) 7 self.MB = False # ^$ match at line breaks (m) 8 self.DM = False # dot matched all (s) 9 self.regex = ''10 self.data = ''11 12 self.ui = regexTesterUi.Ui_Dialog()13 self.ui.setupUi(self) 响应功能: 由于这个界面并没有按钮,我需要程序检测到任何一点变动就改变高亮的部分。
这里就涉及到 Qt 的信号和槽机制。
本文就不复述这些知识,具体可以参考 QT的信号与槽机制介绍。
这里我们就要用到 QTextEdit 控件的 textChanged() 信号函数。
具体的介绍可以查看 Qt 在线文档。
这个信号函数在检测到 QTextEdit 控件中的文本发生了变化的时候会发射一个信号,与其关联的槽函数就会立即执行。
而把这个信号函数和槽函数关联起来的方法就是 connect() 方法。
这个网上也有很多介绍,这里我来介绍一个更 pythonic 的方法,使用 Python 的装饰器。
PyQt中支持同名传递信号,就是说根据控件的名字来自动选择哪个槽。
比如这里提到的 textChanged() 信号函数,如果要响应这个文本变化信号,可以这么做: @QtCore.pyqtSlot() # 该装饰器标志此函数为接收信号的槽函数def on_textEdit_Regex_textChanged(self): # 槽函数名标准格式 【on_控件名字_信号函数名字】self.regex = self.ui.textEdit_Regex.toPlainText()self.ui.textEdit_Data.setText(self.regex) 这里在槽函数上面加一个装饰器表示这个函数为接收信号的槽函数,然后根据控件名和信号函数名命名一个槽函数,这里我的接收正则表达式输入的 QTextEdit 控件名为 textEdit_Regex,因此这个槽函数名为 on_textEdit_Regex_textChanged。
在这个槽函数里,我们通过 toPlainText() 方法得到文本框中的文本数据,然后将 textEdit_Data 中的数据设置为我们输入的值,这样就可以测试这个槽函数运行是否正确。
当测试 textEdit_Data 控件的信号和槽函数时,也可以利用 textEdit_Regex 来输出结果。
除了 QTextEdit 控件,我们的界面还有 QCheckBox 控件。
去查一下文档,可以找到这个控件的信号函数为 stateChanged(int)。
我们发现这个函数带有一个参数,使用之前的方法会发现无法发射信号,这里我们需要在装饰器和槽函数中加入这个参数: @QtCore.pyqtSlot(int)def on_checkBox_CI_stateChanged(self, value): if self.ui.checkBox_CI.isChecked(): self.CI = Trueself.ui.textEdit_Data.setText('True') else: self.CI = Falseself.ui.textEdit_Data.setText('False') 虽然我们不知道这个参数是什么,但只要加进来,就可以正常使用。
同理,碰到需要两个参数的信号函数时,只要再加一个参数就行。
这里,当接收到 stateChanged(int) 信号时,我们使用 isChecked() 方法来检查控件是否被选中。
如果选中了,则返回真,否则返回假。
这里我们同样用到了 QTextEdit 控件来输出结果测试信号是否正确。
其他两个 QCheckBox 控件同样设置。
匹配功能: 完成基本的响应函数之后,就要开始实现匹配功能。
这里很简单,直接调用 re 模块,使用 findall() 方法。
由于有三个 checkBox 提供三种匹配模式: re.I (全拼:IGNORECASE): 忽略大小写(括号内是完整写法,下同)re.M (全拼:MULTILINE): 多行模式,改变'^'和'$'的行为re.S (全拼:DOTALL): 点任意匹配模式,改变'.'的行为因此总共有 23 =8 种匹配模式: 1 def matchData(self): 2 if (not self.CI) and (not self.MB) and (not self.DM): 3 pattern = re.compile(self.regex) 4 elif (not self.CI) and (not self.MB) and (self.DM): 5 pattern = re.compile(self.regex, re.S) 6 elif (not self.CI) and (self.MB) and (not self.DM): 7 pattern = re.compile(self.regex, re.M) 8 elif (not self.CI) and (self.MB) and (self.DM): 9 pattern = re....
想用pygame写游戏,我想知道做GUI用什么软件与Pygame结合的较好...
我也遇到了同样的问题, 不过在一番尝试和学习后终于知道怎么解决了参考 (2)PyQt4读取文件,但是对话框打开两次方法一 :首先, 你要是在自定义的函数上面加个装饰器@pyqtSignature(''), 然后执行, 会发现执行2次(少了一次)其次, 你的platWeight_ui.Ui_Form父类应该是从Qt Designer生成的脚本(.py文件)里面import进来的吧, 去那个脚本里面, 把自定义的槽函数 (如果是默认生成的, 不需要改写的, 不要注掉)连接的 QtCore.QObject.connect(self.xxx, ......) 这句注掉, 不让他执行.你展示出的代码的这个部分也注掉,不让其执行self.setupUi(self)# self.connect(self.modifyButton,SIGNAL("clicked()"),self.on_modifyButton_clicked)# self.connect(self.concelButton,SIGNAL("clicked()"),self.on_concelButton_clicked)# self.connect(self.saveButton,SIGNAL("clicked()"),self.on_saveButton_clicked)最后, 你再试试, 应该就是执行一次了. 缺点是在pyUIC后, 如果自定义的地方多, 需要注释的地方太多了, 而且每次刷新后都要重新注掉后来我发现了方法二:在Qt Designer生成的ui文件pyUIC后的脚本(.py文件)中, 把下面这句注掉就可以了, 这种改法最简单, 连装饰器都不用加了, 但是你那个connect貌似应该要注掉# QtCore.QMetaObject.connectSlotsByName(MainWindow)...
python可以写界面吗
展开全部 静态编译后只生成单个文件。
实现小型和工具型程序不需依赖,易于分享。
直接编译为exe等可执行文件,不用像PyQt、Electron那样再打包。
跨平台编译能力,同时支持多个跨平台库。
并发优化,协程支持,开发多线程GUI程序,比Python效率更优。
语言简单,开发难度较C++小。
...
python适合开发桌面软件吗
展开全部 答非所问,误人子弟!PyQt5是基于图形程序框架Qt5的python语言实现,由一组python模块构成,功能非常强大,如果开发大型工程是个很好的选择。
个人体验:如果是轻量级的开发,tkinter足够了,速度也更流畅,PyQt5对于渣机或者渣代码来说会有点慢~...
wxPython和PyQt谁才是最赞的Python GUI库
展开全部 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,Python GUI图形库允许Python程序员很方便的创建完整的、功能键全的GUI用户界面。
作为Python开发者,你迟早都会用到图形用户界面来开发应用,wxPython和PyQt是两个最受欢迎的Python GUI框架,它们之间有何区别?在实际应用中又该如何选择呢?外观根据我们的经验,大多数用户在使用应用程序时首先关注的一定是应用程序的外观,所以我们先来比较一下wxPython和PyQt的外观。
wxPython是Python语言对流行的wxWidgets跨平台GUI工具库的绑定。
而wxWidgets是用C++语言写成的,所以在GUI中编写按钮小部件的代码时,不会看到类似于另一个操作系统的东西。
▲基于Linux的Thunar和wxPythonPyQt也是使用C++编写的,它基于著名的Qt工具包。
与wxPython不同的是,它不使用nativewidget,而是根据它检测到操作系统创建小部件的近似值。
但是它的近似可以说是做到了极致,就连艺术生基本都分辨不出其与原生有何不同。
如果您使用KDE,可以使用其他PyKDE库来弥补原始PyQt与Linux和BSD之间Plasma desktop外观之间的差距,但这增加了新的依赖关系。
▲基于Linux的KDE和Qt跨平台wxPython和PyQt都支持Linux,Windows和Mac,因此它们都非常适合跨平台;但是这种跨平台并不是无条件的,想要你的Python代码在特定平台中运行还需要进行一些调整,如GUI工具包无法将路径格式调整为数据目录,因此必须在Python中运行最佳实践,使用os.path.join和几个不同的退出方法等等。
GUI工具包的选择不会从平台上神奇地抽象出来。
PyQt正在努力的消除跨平台差异,允许Python本身需要的常见调整。
PyQt可以避免大多数跨平台问题,所以在不同的操作系统中,GUI代码基本都可以保持不变。
在wxPython中,用户可能就需要根据编程内容对不同平台中的GUI代码做一些调整。
例如,为了防止Microsoft Windows上的某些元素闪烁,USE_BUFFERED_DC属性必须设置为True才能对图形进行双缓冲。
这不是默认的,即使可以无条件地对所有平台进行操作,因此在某些用例中可能存在缺陷。
安装作为开发人员,您可能不关心获取应用程序所需的库所需的安装步骤; 但是,如果您计划分发应用程序,则需要考虑用户为了使程序运行所必须执行的安装过程。
在所有平台上安装Qt与安装任何其他应用程序一样简单, 给用户一个下载的链接,然后安装下载的软件包即可使用。
PyQt依赖于Qt本身的C ++代码,这意味着用户不仅要安装PyQt,而且还要安装所有的Qt。
这个操作没有之前的安装那么简单,但是Qt和PyQt团队已经尽可能简化安装操作了,就现在来看,只要是会安装浏览器或游戏的用户,都可以通过链接成功安装Qt,如果用户十分擅长,用户甚至可以将安装脚本作为自己的安装程序的一部分。
在Linux,BSD和Ilumos中,安装程序通常由经销商的软件包管理员为用户编写。
在Linux和Windows上,wxPython的安装过程非常简单,但在Mac OS上是有问题的。
如果可下载的软件包严重过时,Mac OS不利于向后兼容。
由于存在修复程序的错误代码,程序包没有被更新,所以用户自己找到并实现修补程序的机会很低。
现在的解决方案是打包wxPython并将其分发给Mac OS用户,或者依靠外部程序包管理器。
部件和功能PyQt和wxPython都具有用户期望从GUI工具包(包括按钮,复选框,下拉菜单等)中获得的所有常用小部件。
两者都支持拖放操作,标签式界面,对话框和创建自定义小部件。
PyQt具有灵活性的优点。
您可以在运行时重新排列,浮动,关闭和还原Qt面板,为每个应用程序提供高度可配置的以可用性为中心的界面。
只要您使用正确的小部件,就可以为用户提供很多友好的功能,而不必自己去重新思考花哨的技巧。
WxPython具有很多很好的功能,但它在灵活性和用户控制方面不能和PyQt相提并论,PyQt更易于开发人员设计和布局,在开发Qt之前,要先花费一些时间从用户获取跟踪自定义布局的方法,或者如何找到意外关闭的丢失面板等等。
而对于wxPython来说,想要重新打开因意外关闭的面板则是件困难的事情。
总体来说,wxPython毕竟只是wxWidgets的前端,所以如果你真的需要一个功能,你可以用C ++实现它,然后在wxPython中使用它。
与PyQt相比,wxPython的学习曲线更加陡峭一些。
通信GUI应用程序由许多较小的视觉元素组成,通常称为“小部件”。
为了使GUI应用程序顺利运行,小部件必须彼此通信,例如,用于显示图像的窗格可以知道用户选择了哪个缩略图。
大多数GUI工具包,包括wxPython,都可以处理和“callback”的内部通信。
回调是指向某段代码(“函数”)的指针。
如果您想要点击某个按钮小部件时发生某些事情,那么你就要为这个发生的操作编写函数,当点击按钮时,触发函数,发生操作。
如果它和Lambda表达式结合起来将会产生一个非常灵活的解决方案,达到的效果可能会超过你的预期。
另一方面,Qt以信号/槽机制而闻名。
如果您将wxPython的内部通信网络比喻为旧式电话交换机,那么PyQt的通信则可以视为网状网络。
▲在Qt的信号和槽Qt使用了...
1986年7月29号的梦魇