Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
2 / 2 / 0
Регистрация: 31.03.2018
Сообщений: 151
PyQt4

При нажатии на кнопку переместить ее в сторону на 50 пикселей

02.05.2018, 19:19. Показов 5539. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создаю новую тему, чтобы не было у самого каши в голове.

Значит собственно начал с простого. Суть такова - при нажатии на кнопку, она перемещается в сторону на 50.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import sys
from PyQt4 import QtCore, QtGui, uic
 
form_class = uic.loadUiType("MyFirstGui.ui")[0]
 
class MyWindowClass(QtGui.QMainWindow, form_class):
    def __init__ (self, parent = None):
        QtGui.QMainWindow.__init__ (self, parent)
        self.setupUi(self)
 
    def button_clicked(self):
        x = self.pushButton.x()
        y = self.pushButton.y()
        x += 50
        y += 50
        self.pushButton.move(x,y)
 
app = QtGui.QApplication(sys.argv)
myWindow = MyWindowClass()
myWindow.show()
app.exec_()
При нажатии ничего не происходит.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2018, 19:19
Ответы с готовыми решениями:

Как при нажатии на кнопку переместить ее вправо?
Как при нажатии на кнопку переместить ее вправо?

Как сделать, чтобы при первом нажатии на кнопку TButton появлялось одно сообщение, а при втором нажатии - другое?
помогите как сделать в чтобы в кнопке button при первом нажатий вылазило сообщение ShowMessage('Вы ввели неверные данные, повторите...

Как сделать, чтобы при нажатии на кнопку открывался MessageBox, а при следующем нажатии
открытый MessageBox закрывался (продолжалось выполнение кода после MessageBox) и открывался новый MessageBox case WM_COMMAND: ...

21
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
02.05.2018, 21:08
А если
Python
1
2
3
4
5
6
7
8
9
10
11
def __init__ (self, parent = None):
        QtGui.QMainWindow.__init__ (self, parent)
        self.setupUi(self)
        self.pushButton.clicked.connect(button_clicked)
 
def button_clicked():
        x = self.pushButton.x()
        y = self.pushButton.y()
        x += 50
        y += 50
        self.pushButton.move(x,y)
0
2 / 2 / 0
Регистрация: 31.03.2018
Сообщений: 151
02.05.2018, 22:50  [ТС]
Тогда:

Traceback (most recent call last):
File "D:\Python27\MyFirstGui.py", line 20, in <module>
myWindow = MyWindowClass()
File "D:\Python27\MyFirstGui.py", line 10, in __init__
self.pushButton.clicked.connect(button_c licked)
NameError: global name 'button_clicked' is not defined
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
02.05.2018, 22:51
Python
1
connect(self.button_clicked)
0
2 / 2 / 0
Регистрация: 31.03.2018
Сообщений: 151
03.05.2018, 10:03  [ТС]
Да заработало, мерси

Добавлено через 11 часов 9 минут
Едим дальше. Прога преобразует градусы в фаренгейты и обратно.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import sys
from PyQt4 import QtCore, QtGui, uic
 
form_class = uic.loadUiType("tempconv.ui")[0]
 
class MyWindowClass(QtGui.QMainWindow, form_class):
    def __init__ (self, parent = None):
        QtGui.QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.btn_CtoF.clicked.connect(self.btn_CtoF_clicked)
        self.btn_FtoF.clicked.connect(self.btn_FtoF_clicked)
 
    def btn_CtoF_clicked(self):
        cel=float(self.editCel.text())
        fahr=cel*9/5.0+32
        self.spinFahr.setValue(int(fahr+0.5))
 
    def btn_FtoC_clicked(self):
        fahr=self.spinFahr.value()
        cel=(fahr -32)*5/9.0
        self.editCel.selText(str(cel))
           
app = QtGui.QApplication(sys.argv)
myWindow = MyWindowClass(None)
myWindow.show()
app.exec_()
Выдает ошибку:
Traceback (most recent call last):
File "D:/Python27/tempconv.py", line 24, in <module>
myWindow = MyWindowClass(None)
File "D:/Python27/tempconv.py", line 10, in __init__
self.btn_CtoF.clicked.connect(self.btn_C toF_clicked)
AttributeError: 'MyWindowClass' object has no attribute 'btn_CtoF'
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
03.05.2018, 16:37
Цитата Сообщение от Ioan-IV Посмотреть сообщение
Едим дальше.

Не по теме:

Приятного аппетита!

1
2 / 2 / 0
Регистрация: 31.03.2018
Сообщений: 151
04.05.2018, 18:25  [ТС]
C этим я худо-бедно разобрался. Добавил меню.

Код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import sys
from PyQt4 import QtCore, QtGui, uic
 
form_class = uic.loadUiType("tempconv_menu.ui")[0]
class MyWindowClass(QtGui.QMainWindow, form_class):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.btn_CtoF.clicked.connect(self.btn_CtoF_clicked)
        self.btn_FtoC.clicked.connect(self.btn_FtoC_clicked)
        self.action_CtoF.triggered.connect(self.btn_CtoF_clicked)
        self.action_FtoC.triggered.connect(self.btn_FtoC_clicked)
        self.actionExit.triggered.connect(self.menuExit_selected)
 
    def btn_CtoF_clicked(self):
        cel=float(self.editCel.text())
        fahr=cel*9/5.0+32
        self.spinFahr.setValue(int(fahr+0.5))
 
    def btn_FtoC_clicked(self):
        fahr=self.spinFahr.value()
        cel=(fahr -32)*5/9.0
        self.editCel.setText(str(cel))
 
    def menuExit_selected(self):
        self.close()
           
app = QtGui.QApplication(sys.argv)
myWindow = MyWindowClass(None)
myWindow.show()
app.exec_()
Ошибка:
Traceback (most recent call last):
File "D:\Python27\tempconv.py", line 29, in <module>
myWindow = MyWindowClass(None)
File "D:\Python27\tempconv.py", line 11, in __init__
self.action_CtoF.triggered.connect(self. btn_CtoF_clicked)
AttributeError: 'MyWindowClass' object has no attribute 'action_CtoF'


Добавлено через 15 секунд
C этим я худо-бедно разобрался. Добавил меню.

Код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import sys
from PyQt4 import QtCore, QtGui, uic
 
form_class = uic.loadUiType("tempconv_menu.ui")[0]
class MyWindowClass(QtGui.QMainWindow, form_class):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.btn_CtoF.clicked.connect(self.btn_CtoF_clicked)
        self.btn_FtoC.clicked.connect(self.btn_FtoC_clicked)
        self.action_CtoF.triggered.connect(self.btn_CtoF_clicked)
        self.action_FtoC.triggered.connect(self.btn_FtoC_clicked)
        self.actionExit.triggered.connect(self.menuExit_selected)
 
    def btn_CtoF_clicked(self):
        cel=float(self.editCel.text())
        fahr=cel*9/5.0+32
        self.spinFahr.setValue(int(fahr+0.5))
 
    def btn_FtoC_clicked(self):
        fahr=self.spinFahr.value()
        cel=(fahr -32)*5/9.0
        self.editCel.setText(str(cel))
 
    def menuExit_selected(self):
        self.close()
           
app = QtGui.QApplication(sys.argv)
myWindow = MyWindowClass(None)
myWindow.show()
app.exec_()
Ошибка:
Traceback (most recent call last):
File "D:\Python27\tempconv.py", line 29, in <module>
myWindow = MyWindowClass(None)
File "D:\Python27\tempconv.py", line 11, in __init__
self.action_CtoF.triggered.connect(self. btn_CtoF_clicked)
AttributeError: 'MyWindowClass' object has no attribute 'action_CtoF'
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
06.05.2018, 10:57
Написано, что в .ui нет action_CtoF

Покажите содержимое файла tempconv_menu.ui
0
2 / 2 / 0
Регистрация: 31.03.2018
Сообщений: 151
06.05.2018, 11:46  [ТС]
Открыл в блокноте.

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>736</width>
    <height>476</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QPushButton" name="btn_CtoF">
    <property name="geometry">
     <rect>
      <x>270</x>
      <y>110</y>
      <width>201</width>
      <height>51</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>12</pointsize>
      <weight>75</weight>
      <bold>true</bold>
     </font>
    </property>
    <property name="text">
     <string>Celsisus to FaHrenheit</string>
    </property>
   </widget>
   <widget class="QPushButton" name="btn_FtoC">
    <property name="geometry">
     <rect>
      <x>270</x>
      <y>300</y>
      <width>201</width>
      <height>51</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>12</pointsize>
      <weight>75</weight>
      <bold>true</bold>
     </font>
    </property>
    <property name="text">
     <string>Fahrenheit to Celsius</string>
    </property>
   </widget>
   <widget class="QLineEdit" name="editCel">
    <property name="geometry">
     <rect>
      <x>22</x>
      <y>189</y>
      <width>181</width>
      <height>41</height>
     </rect>
    </property>
   </widget>
   <widget class="QSpinBox" name="spinFahr">
    <property name="geometry">
     <rect>
      <x>510</x>
      <y>190</y>
      <width>211</width>
      <height>41</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>12</pointsize>
      <weight>75</weight>
      <bold>true</bold>
     </font>
    </property>
   </widget>
   <widget class="QLabel" name="label">
    <property name="geometry">
     <rect>
      <x>20</x>
      <y>230</y>
      <width>181</width>
      <height>41</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>12</pointsize>
      <weight>75</weight>
      <bold>true</bold>
     </font>
    </property>
    <property name="text">
     <string>Celsius</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_2">
    <property name="geometry">
     <rect>
      <x>510</x>
      <y>230</y>
      <width>211</width>
      <height>41</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>12</pointsize>
      <weight>75</weight>
      <bold>true</bold>
     </font>
    </property>
    <property name="text">
     <string>Fahrenheit</string>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>736</width>
     <height>20</height>
    </rect>
   </property>
   <widget class="QMenu" name="menuFile">
    <property name="title">
     <string>File</string>
    </property>
    <addaction name="actionExit"/>
   </widget>
   <widget class="QMenu" name="menuConvert">
    <property name="title">
     <string>Convert</string>
    </property>
    <addaction name="actionC_to_F"/>
    <addaction name="actionF_to_C"/>
   </widget>
   <addaction name="menuFile"/>
   <addaction name="menuConvert"/>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
  <action name="actionExit">
   <property name="text">
    <string>Exit</string>
   </property>
  </action>
  <action name="actionC_to_F">
   <property name="text">
    <string>C to F</string>
   </property>
  </action>
  <action name="actionF_to_C">
   <property name="text">
    <string>F to C</string>
   </property>
  </action>
 </widget>
 <resources/>
 <connections/>
</ui>
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
06.05.2018, 11:57
Посмотрите как action'ы называются

<action name="actionC_to_F">
<action name="actionF_to_C">

а вы их вызываете

Python
1
2
self.action_CtoF.triggered.connect(self.btn_CtoF_clicked)
self.action_FtoC.triggered.connect(self.btn_FtoC_clicked)
0
2 / 2 / 0
Регистрация: 31.03.2018
Сообщений: 151
06.05.2018, 11:59  [ТС]
Btn, это сокращенно button кнопка. Вот скрин.
Миниатюры
При нажатии на кнопку переместить ее в сторону на 50 пикселей  
0
2 / 2 / 0
Регистрация: 31.03.2018
Сообщений: 151
06.05.2018, 12:03  [ТС]
Вот, я убрал btn:

Traceback (most recent call last):
File "D:/Python27/00000000.py", line 30, in <module>
myWindow = MyWindowClass(None)
File "D:/Python27/00000000.py", line 10, in __init__
self.CtoF.clicked.connect(self.CtoF_clic ked)
AttributeError: 'MyWindowClass' object has no attribute 'CtoF'


Вот файл: https://yadi.sk/d/Aq1X1bwP3VQyao
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
06.05.2018, 12:03
Ioan-IV, C_to_F
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
06.05.2018, 12:07
Python
1
self.actionС_to_F.triggered.connect(self.btn_CtoF_clicked)
и второй также
0
2 / 2 / 0
Регистрация: 31.03.2018
Сообщений: 151
06.05.2018, 12:43  [ТС]
Хорошо, а как она должна называться?

Я попробовал два варианта:

self.action.btn_CtoF.triggered.connect(s elf.btn_CtoF_clicked)

и

self.action_btn_CtoF.triggered.connect(s elf.btn_CtoF_clicked)

Оба нерабочие!

Кнопки в QT-desighner-e называются btn_CtoF и btn_FtoC

Добавлено через 3 минуты
Ioan-IV, C_to_F

Заработало, мерси

Добавлено через 13 секунд
Ioan-IV, C_to_F

Заработало, мерси
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
06.05.2018, 12:43
Цитата Сообщение от Ioan-IV Посмотреть сообщение
QT-desighner-e называются btn_CtoF и btn_FtoC
Мы сейчас разбираемся не с кнопками, а с action

Есть 2 action

Python
1
2
<action name="actionC_to_F">
<action name="actionF_to_C">
и есть 2 функции

Python
1
2
def btn_CtoF_clicked(self):
def btn_FtoC_clicked(self):
Соединяем action и функции

Python
1
2
self.actionC_to_F.triggered.connect(self.btn_CtoF_clicked)
self.actionF_to_C.triggered.connect(self.btn_FtoC_clicked)
0
2 / 2 / 0
Регистрация: 31.03.2018
Сообщений: 151
06.05.2018, 12:48  [ТС]
Заработало, мерси
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
06.05.2018, 18:10
GUI-интерфейс - это тавтология. Тогда уж GU-интерфейс что ли...
0
2 / 2 / 0
Регистрация: 31.03.2018
Сообщений: 151
18.05.2018, 14:05  [ТС]
Снова обращаюсь за помощью.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import time, datetime,random
 
messages=[
    "Из всех деревьев мы врезались в то, которое смогло дать нам сдачи.",
    "Если не прекратить его попытки спасти вам жизнь, он вас убьетю.",
    "Нашу сущность на много лучше демонстрируют действия а не возможности.",
    "Я маг, а не размахивающий палкой бабуин."
    "Величие порождает заивисть, зависть-злобу, злоба-ложь.",
    "В мечтах мы попадаем в наш и только наш маир.",
    "Я убежден, что истина, как правило, предпочтительнее лжи.",
    "Казалось, что рассвет следует за полночью с неприличной поспешностью."
    ]
print "Проверка скорости набора. Введите следующую фразу. Я засеку время."
time.sleep(2)
print "\nПриготовиться..."
time.sleep(1)
print "\nСсоредоточиться..."
time.sleep(1)
print "\nНачали:"
message = random.choice(messages)
print "\n"+ message
srat_time=datetime.datetime.now()
typing=raw_input('>')
end_time=datetime.datetime.now()
diff=end_time-start_time
typing_time=diff.seconds+diff.microseconds/float(1000000)
cps=len(message)/typing_time
wpm=cps*60/5.0
print "\nВы ввели %i символов за %.1f секунд."%(len(message),
                        typing_time)
print "Это %.2f символов в секунду, или %.if слов в минуту" %(cps,wpm)
if typing == message:
    print "Вы не сделали ни одной ошибки."
else:
    print "Но вы сделали по крайней мере одну ошибку."
Ошибка:Traceback (most recent call last):
File "D:/Python27/000000000.py", line 25, in <module>
diff=end_time-start_time
NameError: name 'start_time' is not defined
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
18.05.2018, 14:36
опечатка в 22 строке srat_time
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.05.2018, 14:36
Помогаю со студенческими работами здесь

Необходимо, чтобы при нажатии на одну из кнопок меню, фрейм с рекламой сворачивался, и разворачивался снова при нажатии на другую кнопку
Задача такая: Есть три фрейма (расположены друг под другом) - это реклама (вверху), меню (посередке) и главная страница (внизу)....

При нажатии на кнопку текст появляется , при повторном нажатии пропадает
Написать программу где есть кнопка и при нажатии на кнопку первый раз какой-то текст появился и второй раз чтобы пропал и так далее

При нажатии на кнопку вывести надпись, при нажатии на другую - сбросить
Создайте программу, которая при нажатии на одну кнопку (объект Button) выводит на этикетку (Label) некоторую надпись, а при нажатии на...

Организовать смену цвета пикселей при нажатии на пробел
Всем привет! Скиньте пожалуйста рабочий .asm с решением задания, если есть. Задача: Организовать смену цвета пикселей при нажатии клавиши...

При нажатии на кнопку на первой форме, скрывать кнопку на второй
Вот такая проблема товарищи, за простите. Есть VBA код на кнопке авторизация кнопка лежит на форме1 , при нажатию на кнопку нужно чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru