Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » функция в QT4, как повесить на кнопку. [RSS Feed]

#1 Дек. 12, 2014 20:52:13

Mazay_Ka
Зарегистрирован: 2013-04-03
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

функция в QT4, как повесить на кнопку.

Допустим решил я себе по приколу написать таймер выключения, так для само развития и тд.

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

к примеру 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 (Дек. 12, 2014 20:53:21)

Офлайн

#2 Дек. 12, 2014 20:57:17

Mazay_Ka
Зарегистрирован: 2013-04-03
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

функция в QT4, как повесить на кнопку.

кстати примерно аналогичная беда у меня получается в 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()

Офлайн

#3 Дек. 12, 2014 22:10:14

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

функция в QT4, как повесить на кнопку.

Вы хотите, чтобы после нажатия кнопки через какое-то время закрывалось окно? Я все верно понял?

Офлайн

#4 Дек. 12, 2014 22:59:32

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2756
Репутация: +  184  -
Профиль   Отправить e-mail  

функция в QT4, как повесить на кнопку.

self.connect(sleep, QtCore.SIGNAL('clicked()'),
            QtGui.qApp, QtCore.SLOT(main.turn_off()))

QtGui.qApp - нафиг
QtCore.SLOT - нафиг
main.turn_off() замени на main.turn_off



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Дек. 12, 2014 23:06:57

Mazay_Ka
Зарегистрирован: 2013-04-03
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

функция в QT4, как повесить на кнопку.

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

Офлайн

#6 Дек. 13, 2014 10:23:24

Mazay_Ka
Зарегистрирован: 2013-04-03
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

функция в QT4, как повесить на кнопку.

Спасибо тут разобрался, появился следующий вопрос как мне из тескового поля получить значение, чтобы я мог его передать например функции как-то так

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_())

Офлайн

#7 Дек. 13, 2014 10:48:19

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

функция в QT4, как повесить на кнопку.

Mazay_Ka
появился следующий вопрос
метод text()
но просто найти в гугле ответ быстрее чем даже задать этот вопрос на форуме

здесь - http://pyqt.sourceforge.net/Docs/PyQt4/modules.html
иногда пользуюсь - прохорёнок pyqt…

Офлайн

#8 Дек. 13, 2014 11:02:10

Mazay_Ka
Зарегистрирован: 2013-04-03
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

функция в QT4, как повесить на кнопку.

vrabey
спасибо разобрался

Отредактировано Mazay_Ka (Дек. 13, 2014 11:37:40)

Офлайн

  • Начало
  • » GUI
  • » функция в QT4, как повесить на кнопку.[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version