我们接下来的讨论,会基於读者已经先读过我 day5 文章 的架构下去进行程序设计
如果还不清楚我程序设计的逻辑 (UI.py、controller.py、start.py 分别在干麻)
建议先阅读 day5 文章後再来阅读此文。
https://www.wongwonggoods.com/python/pyqt5-5/
https://github.com/howarder3/ironman2021_PyQt5_photoshop/tree/main/day08_input_text
一样先打开我们的 Qt designer,
这篇我们要介绍的是 QLineEdit,
作为我们第二个「input」用的功能。
我们在 Input widgets 中找到 Line Edit,
拖曳至视窗自己喜欢的地方,
另外我们今天想实作一个小功能,结合昨天与前天的 day 6、day 7,
让我们「输入」的文字,可以藉由「点击按钮」,「显示」在画面的某处。
因此我们今天总共需要3个物件
读者们可以开始自行设计自己的介面罗,以下为我的示范:
一样,我们可以修改物件的名称 (上图红框处) ,使我们在未来更容易识别是哪一个功能。这边作为示范就不改动了。
文字大小那些也都可以自己改。
一样的编译指令,我们加上 -x (也可不加),
我们就可以先检视看看转换後的视窗是不是跟我们想像的一样。
pyuic5 -x day8.ui -o UI.py
一样,这程序只有介面 (视觉上的呈现),没有任何互动功能
python UI.py
看起来是不是很可爱(?)呢,有了介面,
接下来我们要开始实作功能面的事情。
接下来,我们必须先研究一下我们刚刚的程序,
把我们刚刚程序中的「物件名称」找出来。
名称也可以自己在设计 Qt desginer 时设定,可以看上一个 part 我有框起来的部份。
如果读者使用的是预设的名称,应该会在刚转换完成的 UI.py 中 找到以下这段,
这次我们有了3个东西罗!等等我们要让他们能互动起来
(为了示范,名称我都是用预设的没有改。)
(务必记得名称,不然等等不知道要改谁XD)
还记得我们在 day5 中的模板吗?这边我们直接复制过来使用并修改。
from PyQt5 import QtWidgets, QtGui, QtCore
from UI import Ui_MainWindow
class MainWindow_controller(QtWidgets.QMainWindow):
def __init__(self):
super().__init__() # in python3, super(Class, self).xxx = super().xxx
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.setup_control()
def setup_control(self):
# TODO
# qpushbutton doc: https://doc.qt.io/qt-5/qpushbutton.html
self.ui.pushButton.setText('Print message!')
self.ui.pushButton.clicked.connect(self.buttonClicked)
def buttonClicked(self):
msg = self.ui.lineEdit.text()
self.ui.label.setText(msg)
我们在新增或修改了 setup_control(), buttonClicked() 这两个部份
[重要]
self.ui.pushButton.clicked.connect(self.buttonClicked):当按键被触发时,要做 self.buttonClicked() 这个 function 里面的事情。这里我们要定义的是按钮被按下时,会执行的事件内容,
我们首先要读取使用者输入的内容,
这样就完成了我们今日想实现的功能!
我们现在可以透过输入一些内容,并点击按键,
就可以让结果显示在画面上!
照我们 day5 的程序架构,我们执行
python start.py
每当我们按一次按键,框框内显示的文字就会同步显示在下方。
★ 本文也同步发於我的个人网站(会有内容目录与显示各个小节,阅读起来更流畅):【PyQt5】Day 8 - 我们的第二个 input 手段 - QLineEdit
Webpack安装说明 以前传统开发,我们会用到许多大大小小的Js/Css/img,通常是各自存放在...
排序法有很多种,也牵扯到资料结构以及演算法,像是二元搜寻法、气泡排序法… 举个sorting的例子来...
上回说到 Fat Model 的逻辑散落在各处,那这回就要来说说散落在哪、以及造成这种现象的原因。 ...
安装passport套件 安装套件cmd执行以下 composer require laravel/...
今天要来介绍有关於系统帮我们整理好的资料夹(app),理解後在设计上会有很大的帮助、且较为方便,我会...