2017-02-15 21 views
0

Итак, скажем, у меня есть этот ui, у которого есть 2 пустых текстовых пятна для заполнения и кнопка «Запустить».PyQt: привязка кнопок к функциям в моей программе

Я хочу, чтобы это сделать, что 2 пустые текстовые пятна идут на некоторые значения в программе и кнопку запуска будет в основном запустить питона «Main» программа ...

, как я могу это сделать?

+0

Следуйте приведенному ниже примеру кода, но используйте метод getText() для извлечения текста из текстовых полей. https://pythonspot.com/en/pyqt4-textbox/ –

ответ

0

В PyQt5 модуль QWidgets предоставляет набор элементов интерфейса для создания классических пользовательских интерфейсов рабочего стола. Виджеты могут отображать данные и информацию о статусе, получать ввод пользователя и предоставлять контейнер для других виджетов, которые должны быть сгруппированы вместе. Виджет, который не встроен в родительский виджет называется window.A родительский виджет, содержащий различные ребенка widgets.So сначала начать писать код для вашего окна, как

window=QtWidgets.QWidget() 

(Класс QWidget является базовым классом всех объектов пользовательского интерфейса). После создания вашего окна вам нужно установить макет для вашего окна пользовательского интерфейса. Существует много классов для макетов в Qt, но наиболее распространенными являются QVBoxLayout (для выравнивания виджета по вертикали.) И QHBoxLayout (для выравнивания виджета по горизонтали.), И много раз они оба используются для создания настраиваемого макета. Теперь создать свой QVBoxLayout в

vbox=QWidgets.QVBoxLayout() 

(обратите внимание, что здесь VBox это просто имя переменной) .Отель следующая вещь, чтобы поместить виджеты в окне, которое может быть сделано, как

text_1=QtWidgets.QLineEdit() 
text_2=QtWidgets.QLineEdit() 
run_btn=QtWidgets.QPushButton("run") 
text_3=QtWidgets.QLineEdit() 

Обратите внимание, что в QPushButton мы можем назвать имя кнопки в качестве аргумента (ex-run в этом случае). Настало время для событий и сигналов. Чтобы подключить PushButton к функции, напишите btn.clicked.connect(function_name) здесь btn - это наш PushButton. Обратите внимание, что имя_функции не имеет круглых скобок, что означает, что мы не вызывали эту функцию, просто подключили кнопку к функции (когда пользователь нажмет кнопку кнопка функция запускается на выполнение) .Foramlly это можно записать в виде

run_btn=QtWidgets.QPushButton("run") 
def main(): 
    data_1=text_1.text() 
    data_2=text_2.text() 
    text_3.setText(str(int(data_1)+int(data_2))) 

в настоящее время в нашей main функции мы впервые собрали данные из text_1 и text_2 (есть text() метод QLineEdit, чтобы получить данные из QLineEdit как str). Так что наша функция main принимает значения как text_1 и text_2 и добавляет их (это приведет к возникновению ошибки, если введенные значения не могут быть преобразованы в целые числа) и устанавливает это значение в text_3 методом setText().

Теперь вы должны упаковать виджеты в нашем vbox, который мы создали ранее, как

vbox.addWidget(text_1) 
vbox.addWidget(text_2) 
vbox.addWidget(run_btn) 
vbox.addWidget(text_3) 

И теперь задающие расположение нашего окна, как

window.setLayout(vbox) 

и показать окно, как

window.show() 

К настоящему моменту отсутствует одна вещь, и это линия

app=QtWidgets.QApplication(sys.argv) 

Эта строка необходима, поскольку каждое приложение PyQt5 должно создать объект приложения. Параметр sys.argv представляет собой список аргументов из командной строки. Теперь мы должны создать mainloop приложения. Обработка событий начинается с этого момента. Метод app.exec_() запускает наше приложение, а затем обеспечивает чистый выход.

Теперь положить все вместе:

import sys 
from PyQt5 import QtWidgets 

app=QtWidgets.QApplication(sys.argv) 
window=QtWidgets.QWidget() 
vbox=QtWidgets.QVBoxLayout() 
text_1=QtWidgets.QLineEdit() 
text_2=QtWidgets.QLineEdit() 
run_btn=QtWidgets.QPushButton("run") 
text_3=QtWidgets.QLineEdit() 
def main(): 
    data_1=text_1.text() 
    data_2=text_2.text() 
    text_3.setText(str(int(data_1)+int(data_2))) 
run_btn.clicked.connect(main) 
vbox.addWidget(text_1) 
vbox.addWidget(text_2) 
vbox.addWidget(run_btn) 
vbox.addWidget(text_3) 
window.setLayout(vbox) 
window.show() 
sys.exit(app.exec_()) 

Это сделает окно пользовательского интерфейса, как это:

enter image description here

Надеется, что это помогает. Пожалуйста, сделайте комментарий в случае возникновения проблем. Счастливое кодирование!

+0

Можете ли вы объяснить, что вы здесь написали? im действительно плохо при кодировании ... я понятия не имею, что вы написали –

+0

Дорогой @ItayKatsnelson Я отредактировал свой код, чтобы хорошо объяснить ответ, пожалуйста, сделайте комментарий в случае каких-либо трудностей :) – Tarptaeya

+0

Спасибо, что это мне очень помогло, но я просто реализовано im на PyQt4 .. есть ли какая-либо разница, или я просто должен установить PyQt5 и следовать вашему коду? большое спасибо ! –

 Смежные вопросы

  • Нет связанных вопросов^_^