Найти - Пользователи
Полная версия: функция в QT4, как повесить на кнопку.
Начало » GUI » функция в QT4, как повесить на кнопку.
1
Mazay_Ka
Допустим решил я себе по приколу написать таймер выключения, так для само развития и тд.

Есть у меня файл с функциями выключения.

к примеру main.py

import subprocess
PIPE = subprocess.PIPE
def turn_off():
    print ("Please, enter time")
    waitime=input()
    time = waitime*60
    cmd = 'shutdown -s -t ' +str(time)
    p = subprocess.Popen(cmd, shell = True)
    return
def turn_off_abort():
    cmd_abort = 'shutdown -a'
    p = subprocess.Popen(cmd_abort, shell = True)
    return

далее тестовый вариант окна

import sys
from PyQt4 import QtGui, QtCore
import main
class sleep_buttn(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Icon')
        sleep = QtGui.QPushButton('sleep', self)
        sleep.setGeometry(10, 10, 60, 35)
        self.connect(sleep, QtCore.SIGNAL('clicked()'),
            QtGui.qApp, QtCore.SLOT(main.turn_off()))
app = QtGui.QApplication(sys.argv)
sl = sleep_buttn()
sl.show()
sys.exit(app.exec_())

вопрос почему main.turn_off() срабатывает сразу при запуске, а не при клике, как можно сделать так чтобы эта функция выполнялась при клике.
Не судите строго, так пока набросок, не могу понять как всунуть функции именно на клик, спасибо за помощь.
Mazay_Ka
кстати примерно аналогичная беда у меня получается в Tkinter
from Tkinter import *
import main
root = Tk()
btn = Button(root,                 
            text="turn off",     
             width=30,height=5,     
             bg="white",fg="green") 
btn.bind("<Button-1>", main.turn_off())    
btn.pack()                         
root.mainloop()
4kpt_II
Вы хотите, чтобы после нажатия кнопки через какое-то время закрывалось окно? Я все верно понял?
Rodegast
self.connect(sleep, QtCore.SIGNAL('clicked()'),
            QtGui.qApp, QtCore.SLOT(main.turn_off()))

QtGui.qApp - нафиг
QtCore.SLOT - нафиг
main.turn_off() замени на main.turn_off
Mazay_Ka
4kpt_II
Вы хотите, чтобы после нажатия кнопки через какое-то время закрывалось окно? Я все верно понял?
я хочу чтобы при нажатии на кнопку срабатывала функция turn_off из модуля main.py
main.turn_off()
вообще функция turn_off выключает компьютер через заданное время.
так вот хочу эту функцию привязать к кнопке чтоб при нажатии срабатывала, а там уже доделаю чтобы передавалось время и тд. Не могу понять почему когда я запускаю, то как бы сразу функция main.turn_off()
срабатывает даже без появления окна и нажатия на кнопку.
Mazay_Ka
Спасибо тут разобрался, появился следующий вопрос как мне из тескового поля получить значение, чтобы я мог его передать например функции как-то так

import sys
from PyQt4 import QtGui, QtCore
class Sleeper(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        #self.time = 0
        self.setGeometry(200, 200, 200, 150)
 
        self.label = QtGui.QLineEdit(self)# как получить значение от сюда, его введут ручками чтобы потом его передать функции
        
        self.label.setGeometry(70, 20, 60, 20) 
app = QtGui.QApplication(sys.argv)
Sleeper = Sleeper()
Sleeper.show()
sys.exit(app.exec_())
vrabey
Mazay_Ka
появился следующий вопрос
метод text()
но просто найти в гугле ответ быстрее чем даже задать этот вопрос на форуме

здесь - http://pyqt.sourceforge.net/Docs/PyQt4/modules.html
иногда пользуюсь - прохорёнок pyqt…
Mazay_Ka
vrabey
спасибо разобрался
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB