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

Не могу перерисовать слой

15.09.2014, 17:32. Показов 705. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть главный класс(Main), который создает слой используя другой класс(Login), в классе Login содержится только кнопка при нажатии на которую открывается диалоговое окно с гуглом(класс OpenWeb), при изменении url, диалоговое окно закрывается и хочу чтобы перерисовался главный слой, из класса Login2, нашел несколько способов в интернете, но они работают только если включить их сразу с исполнение в главном классе.
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
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
#!/usr/bin/env python
#-*- coding:utf-8 -*-
 
from PyQt4 import QtCore, QtGui
from PyQt4 import QtWebKit
 
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError: 
    _fromUtf8 = lambda s: s
 
 
class Singleton(object):
    _instance = None
    def __new__(cls, *args, **kwargs):
        if not cls._instance:
            cls._instance = super(Singleton, cls).__new__(
                                cls, *args, **kwargs)
        else:
            print cls.__name__
 
        return cls._instance
 
 
 
class Login(QtGui.QWidget):
    def __init__(self, parent=None):
        super(Login, self).__init__(parent)
        self.setWindowTitle('Login')
 
        self.setGeometry(QtCore.QRect(0, 0, 100, 50))
        self.pushButtonWindow = QtGui.QPushButton(self)
        self.pushButtonWindow.setText("Open")
        self.pushButtonWindow.clicked.connect(self.on_pushButton_clicked)
 
        self.mainLayout = QtGui.QHBoxLayout(self)
        self.mainLayout.addWidget(self.pushButtonWindow)
 
        self.dialogBrowser = OpenWeb(self)
 
    @QtCore.pyqtSlot()
    def on_pushButton_clicked(self):
        self.dialogBrowser.exec_()
 
 
class Login2(QtGui.QWidget):
    def __init__(self, parent=None):
        super(Login2, self).__init__(parent)
        self.setWindowTitle('Login33')
 
        self.pushButtonWindow = QtGui.QPushButton(self)
        self.pushButtonWindow.setText("Button")
 
        self.mainLayout = QtGui.QHBoxLayout(self)
        self.mainLayout.addWidget(self.pushButtonWindow)
 
 
 
 
 
class OpenWeb(QtGui.QDialog):
    def __init__(self, parent=None):
        super(OpenWeb, self).__init__(parent)
        self.setWindowTitle('Open Web')
        self.webView = QtWebKit.QWebView(self) 
        self.webView.setGeometry(QtCore.QRect(0, 0, 800, 600)) 
        self.url = "http://www.google.co.uk/"
        self.webView.setUrl(QtCore.QUrl(_fromUtf8(self.url))) 
        self.webView.setObjectName(_fromUtf8("webView"))
 
 
        QtCore.QObject.connect(self.webView,QtCore.SIGNAL("linkClicked (const QUrl&)"), self.link_clicked)
        QtCore.QObject.connect(self.webView,QtCore.SIGNAL("urlChanged (const QUrl&)"), self.link_clicked)
 
    def link_clicked(self, url):
        url_2 = url.toString()
        print(url_2) + "\n"
        #print self.url, url_2
        if self.url != url_2:
            m = Main()
            m.loadSecond()
            self.close()
 
 
 
class Main(QtGui.QWidget, Singleton):
    def __init__(self, parent=None):
        super(Main, self).__init__(parent)
 
        self.mainLayout = QtGui.QVBoxLayout()
 
        self.loadFirst()
        self.setWindowTitle('Simple')
 
 
    def loadFirst(self):
        self.w = Login(self)
        self.mainLayout.addWidget(self.w)
 
    def loadSecond(self):
        print 'second'
 
        self.clearLayout(self.mainLayout)
        self.w = Login2(self)
        self.mainLayout.addWidget(self.w)
        self.update()
 
 
        self.mainLayout.removeWidget(self.w)
        self.w.deleteLater()
        self.w = None
 
 
    def clearLayout(self, layout):
        if layout is not None:
            while layout.count():
                item = layout.takeAt(0)
                widget = item.widget()
                if widget is not None:
                    widget.deleteLater()
                else:
                    self.clearLayout(item.layout())
 
 
 
 
if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    main = Main()
    main.show()
    sys.exit(app.exec_())
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.09.2014, 17:32
Ответы с готовыми решениями:

Не могу отправить окну сообщение WM_PAINT (точнее, не могу перерисовать окно)
Смотрите оконную функцию она в самом низу. Всё остальное шаблонный код по созданию окна. #include <windows.h> #include...

Не могу перерисовать панели
Спасайте! Написал прогу, рисующие рандомные треугольники с рандомными цветами на 7 панелей (по одному треугольнику на панели): using...

Не могу сохранить нужный мне слой из psd файла
Добрый день! помогите пожалуйста: скачал psd файл с нарезанным по слоям сайтом. Когда выделяю нужный мне кусочек, например кнопку или...

1
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
16.09.2014, 10:58
Какой-такой главный слой?
И что включаете для его перерисовки?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.09.2014, 10:58
Помогаю со студенческими работами здесь

Не пойму почему слой не вкладывается в слой
Приветствую многоуважаемое сообщество! Вот написал такой кусок: <div style="position: relative; padding: 4px;"...

Не могу закрепить текстовый слой к странице и уменьшить расстояние между строк
Народ хелп! Работаю в dreamweaver. Сделал второй слой с текстом, который в программе позиционируется как надо (в css), а при экспорте...

Не могу перерисовать "панель"
Форма. На форме две панели. На одной панели - 4 кнопки. На другой панели по нажатию каждой конпки хочу нарисовать соответствующие вещи -...

Перерисовать контрол
Интересует такая тема. Хочу поменять цвет бордера для текстбокса (исходно он исключительно черный, если мы устанавливаем flat style). При...

Перерисовать треугольник
Прошу помощи. Проблема заключается в следующем. Я в псевдоэлементе after diva (etap-text) нарисовал треугольник content: ''; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru