首先,之前已经回答了类似的问题,但我需要一些帮助.
我有一个窗口,其中包含一个按钮(第一类),我想按下,第二个空白窗口出现(第二类).
我摆弄了从这个问题复制的代码:点击打开新窗口的PyQT,我写了这段代码:
# -*- coding: utf-8 -*-
from PyQt4 import QtGui, QtCore
import sys
import design1, design2
class Second(QtGui.QMainWindow, design2.Ui_MainWindow):
def __init__(self, parent=None):
super(Second, self).__init__(parent)
self.setupUi(self)
class First(QtGui.QMainWindow, design1.Ui_MainWindow):
def __init__(self, parent=None):
super(First, self).__init__(parent)
self.setupUi(self)
self.pushButton.clicked.connect(self.on_pushButton_clicked)
self.dialog = Second(self)
def on_pushButton_clicked(self):
self.dialog.exec_()
def main():
app = QtGui.QApplication(sys.argv)
main = First()
main.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
但是on_pressed,会出现以下错误消息:
AttributeError: 'Second' object has no attribute 'exec_'
Run Code Online (Sandbox Code Playgroud)
(design1和design2来自Qt设计师.)
任何想法将不胜感激.
我开始摆弄GTK +,直到我尝试修改旋转按钮小部件:
我不太明白答案,但我开始寻找CSS并尝试代码示例.最后,经过一些谷歌搜索和复制/粘贴代码,特别是从这里如何设置一个特定的CSS类到gtk3中的小部件?(c),这是我设法做的没有语法或其他错误:
test.c的
#include <gtk/gtk.h>
#include <string.h>
static void
activate (GtkApplication *app, gpointer user_data) {
GtkStyleContext *context;
GtkWidget *button_01;
GtkWidget *button_02;
button_01 = gtk_button_new_with_label("This is a simple button");
button_02 = gtk_button_new_with_label("This is a stylish button");
context = gtk_widget_get_style_context(button_02);
gtk_style_context_add_class(context, "my_style");
GtkWidget *window;
GtkWidget * main_box;
window = gtk_application_window_new (app);
main_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 25);
gtk_box_set_homogeneous (GTK_BOX (main_box), TRUE);
gtk_container_add (GTK_CONTAINER (window), main_box);
gtk_container_add (GTK_CONTAINER (main_box), button_01);
gtk_container_add (GTK_CONTAINER (main_box), button_02);
gtk_widget_show_all (window);
}
int main …Run Code Online (Sandbox Code Playgroud) 一些GUI工具箱包含事件,例如,on_change每次文本框中的文本更改时都会触发这些事件。
根据这样的:
https://kivy.org/docs/api-kivy.uix.textinput.html的on_text事件应该是平等的。因此,我创建了一个TextInput框,期望每次更改一个字母时,该框的内容就会显示在终端中。这是代码:
from kivy.app import App
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
class LoginScreen(BoxLayout):
def __init__(self, **kwargs):
super(LoginScreen, self).__init__(**kwargs)
self.orientation = 'horizontal'
self.mytext = TextInput(text='500', multiline = False)
self.add_widget(self.mytext)
self.mytext.bind(on_text = self.calc)
#self.mytext.bind(on_text_validate = self.calc)
def calc(self, mytext):
print mytext.text
class MyApp(App):
def build(self):
return LoginScreen()
if __name__ == '__main__':
MyApp().run()
Run Code Online (Sandbox Code Playgroud)
但是,什么也没有发生,这显然意味着该calc功能根本没有被触发。请注意,该on_text_validate事件运行正常,因为当我按Enter键时,该框的内容已打印在终端中。
那么,我是否误解了on_text活动,如果是,我该如何实现自己的目标?
我正在使用python 2.7,我想使用类创建某种数据结构
问题A:
假设我创建了这个类:
class my_data():
def __init__(self,data1,data2,data3):
self.data1 = data1
self.data2 = data2
self.data3 = data3
Run Code Online (Sandbox Code Playgroud)
之后我创建了一些类的实例,例如
d1 = my_data(1,2,None)
d2 = my_data(4,5,d1)
d3 = my_data(7,8,d2)
Run Code Online (Sandbox Code Playgroud)
如您所见,data3可能是None或实例.到现在为止还挺好.
现在,让我们再次尝试创建一些其他实例(艰难的方式):
d2 = my_data(4,5,d1)
d1 = my_data(1,2,None)
d3 = my_data(7,8,d2)
Run Code Online (Sandbox Code Playgroud)
在这种情况下会发生NameError异常,因为显然在行d2 = my_data(4,5,d1)中,d1尚未定义.
所以,这里有一个问题:我想创建data3应该是None或实例的实例.如果data3为None或现有实例,则没问题.但是如果data3引用了一个未实现的实例,我希望创建该实例.
例如:d2 = my_data(4,5,d1)
如果d1不存在,我想作为虚拟实例启动d1 = my_data(None,None,None),之后,d2也要启动
我试过这个,但似乎没有做到这一点:
class my_data():
def __init__(self,data1,data2,data3):
self.data1 = data1
self.data2 = data2
try:
self.data3 = data3
except:
data3 = my_data(None,None,None)
self.data3 = data3
Run Code Online (Sandbox Code Playgroud)
问题B:
假设我们以某种方式创建了类的一些实例(d1,d2,d3,...).如何将实例存储在类中的列表中,以便在此类中创建的每个实例都包含在列表中?
类似my_data.my_list()的东西会生成[d1,d2,d3,...]
任何想法将不胜感激
我有一个从Qt Designer派生的简单窗口(design.py),该窗口包含三个单选按钮:
# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.setEnabled(True)
MainWindow.resize(158, 110)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.myradioButton1 = QtGui.QRadioButton(self.centralwidget)
self.myradioButton1.setGeometry(QtCore.QRect(20, 10, 102, 22))
self.myradioButton1.setObjectName(_fromUtf8("myradioButton1"))
self.myradioButton2 = QtGui.QRadioButton(self.centralwidget)
self.myradioButton2.setGeometry(QtCore.QRect(20, 40, 102, 22))
self.myradioButton2.setObjectName(_fromUtf8("myradioButton2"))
self.myradioButton3 = QtGui.QRadioButton(self.centralwidget)
self.myradioButton3.setGeometry(QtCore.QRect(20, …Run Code Online (Sandbox Code Playgroud) 在此GTK +之后将字体更改为旋转按钮,这如何将CSS应用于GTK +代码?问题,我开始理解如何将CSS样式应用于GTK代码,但是仍然有很多令人困惑的细节。
这是我用来创建两个按钮和三个标签的代码:
测试
#include <gtk/gtk.h>
#include <string.h>
static void
activate (GtkApplication *app,
gpointer user_data)
{
GtkWidget *window = gtk_application_window_new (app);;
GtkWidget *button_01 = gtk_button_new_with_label("This is button 01");
GtkWidget *button_02 = gtk_button_new_with_label("This is button 02");
GtkWidget *label0 = gtk_label_new("hello 0");
GtkWidget *label1 = gtk_label_new("hello 1");
GtkWidget *label2 = gtk_label_new("hello 2");
GtkWidget * main_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 25);
GtkCssProvider *cssProvider = gtk_css_provider_new();
gtk_css_provider_load_from_path(cssProvider, "theme.css", NULL);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
GTK_STYLE_PROVIDER(cssProvider),
GTK_STYLE_PROVIDER_PRIORITY_USER);
gtk_box_set_homogeneous (GTK_BOX (main_box), TRUE);
gtk_container_add (GTK_CONTAINER (window), main_box); …Run Code Online (Sandbox Code Playgroud)