如何引用我在 Qt Designer 中创建的按钮?
How do I reference a button that I created in Qt Designer?
我在QT6 creator中创建了一个按钮并将其命名为scanButton。当我 运行 代码时,该按钮出现。但是,一旦我想将它绑定到一个函数,我就会 运行 遇到一个问题。我终于得到了一个结果,但它在左上角显示了一个新按钮,它 运行s self.close,这不应该是这种情况。
.ui 代码:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Widget</class>
<widget class="QWidget" name="Widget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>Widget</string>
</property>
<widget class="QPushButton" name="scanButton">
<property name="geometry">
<rect>
<x>280</x>
<y>210</y>
<width>181</width>
<height>141</height>
</rect>
</property>
<property name="text">
<string>Scan</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>
.py代码:
import os
from pathlib import Path
import sys
from PySide6.QtWidgets import QApplication, QWidget, QPushButton
from PySide6.QtCore import QFile
from PySide6.QtUiTools import QUiLoader
class Widget(QWidget):
def __init__(self):
super(Widget, self).__init__()
self.load_ui()
def load_ui(self):
loader = QUiLoader()
path = os.fspath(Path(__file__).resolve().parent / "form.ui")
ui_file = QFile(path)
ui_file.open(QFile.ReadOnly)
loader.load(ui_file, self)
ui_file.close()
scanButton = QPushButton(self)
scanButton.clicked.connect(self.close)
if __name__ == "__main__":
app = QApplication([])
widget = Widget()
widget.show()
sys.exit(app.exec_())
首先你需要加载你的 ui 文件:
self.ui = loader.load('form.ui', None)
self.ui.show()
然后你可以用这样的名字调用你的按钮:
self.ui.scanButton.clicked.connect(self.check)
请注意,当您按下按钮时,它将转到 check
函数。
完整代码:
class main(QWindow):
def __init__(self):
super().__init__()
loader = QUiLoader()
self.ui = loader.load('form.ui', None)
self.ui.show()
self.ui.scanButton.clicked.connect(self.check)
def check(self):
print('You pressed the button!')
我在QT6 creator中创建了一个按钮并将其命名为scanButton。当我 运行 代码时,该按钮出现。但是,一旦我想将它绑定到一个函数,我就会 运行 遇到一个问题。我终于得到了一个结果,但它在左上角显示了一个新按钮,它 运行s self.close,这不应该是这种情况。
.ui 代码:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Widget</class>
<widget class="QWidget" name="Widget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>Widget</string>
</property>
<widget class="QPushButton" name="scanButton">
<property name="geometry">
<rect>
<x>280</x>
<y>210</y>
<width>181</width>
<height>141</height>
</rect>
</property>
<property name="text">
<string>Scan</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>
.py代码:
import os
from pathlib import Path
import sys
from PySide6.QtWidgets import QApplication, QWidget, QPushButton
from PySide6.QtCore import QFile
from PySide6.QtUiTools import QUiLoader
class Widget(QWidget):
def __init__(self):
super(Widget, self).__init__()
self.load_ui()
def load_ui(self):
loader = QUiLoader()
path = os.fspath(Path(__file__).resolve().parent / "form.ui")
ui_file = QFile(path)
ui_file.open(QFile.ReadOnly)
loader.load(ui_file, self)
ui_file.close()
scanButton = QPushButton(self)
scanButton.clicked.connect(self.close)
if __name__ == "__main__":
app = QApplication([])
widget = Widget()
widget.show()
sys.exit(app.exec_())
首先你需要加载你的 ui 文件:
self.ui = loader.load('form.ui', None)
self.ui.show()
然后你可以用这样的名字调用你的按钮:
self.ui.scanButton.clicked.connect(self.check)
请注意,当您按下按钮时,它将转到 check
函数。
完整代码:
class main(QWindow):
def __init__(self):
super().__init__()
loader = QUiLoader()
self.ui = loader.load('form.ui', None)
self.ui.show()
self.ui.scanButton.clicked.connect(self.check)
def check(self):
print('You pressed the button!')