我正在用python3和XLib制作一些程序.
在我的电脑上使用Ubuntu 14.04一切正常但是当我尝试在我的笔记本中运行我的应用程序时手动安装Xorg我得到例外:
Xlib.error.DisplayConnectionError: Can't connect to display ":0": b'No protocol specified\n'
Run Code Online (Sandbox Code Playgroud)
在线:
self.__display = Xlib.display.Display()
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?如何解决这个问题,它可以在每个Linux上运行?
这看起来不像X11的重复:运行gnome应用程序作为另一个用户.在我的两台计算机上,我有相同的用户和组,所以这个问题可能与缺乏运行我的程序的权限无关.
它必须是X配置错误的东西.
我必须用按钮编写自己的单元格渲染器,我想出了这个:
#!/usr/bin/env python3
from gi.repository import Gtk
class CellRendererButton(Gtk.CellRenderer):
def __init__(self):
Gtk.CellRenderer.__init__(self)
def get_size(self, widget, cell_area):
buttonHeight = cell_area.height
buttonWidth = buttonHeight
return (0, 0, buttonWidth, buttonHeight)
def render(self, window, widget, background_area, cell_area, expose_area, flags):
style = widget.get_style()
x, y, buttonWidth, buttonHeight = self.get_size()
style.paint_box(window, widget.get_state(), Gtk.SHADOW_ETCHED_OUT, expose_area, widget, None, 0, 0, buttonWidth, buttonHeight)
class MyWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title = 'T', default_width = 200, default_height = 300)
self.connect('destroy', self.__onDestroy)
self.__createGUI()
self.show_all()
def __createGUI(self):
box = Gtk.Box(orientation = Gtk.Orientation.VERTICAL)
listStore …Run Code Online (Sandbox Code Playgroud) 如何在PowerShell中在一行中设置环境变量的值并执行命令?
我有这个:
PGPASSWORD=db_pass psql -U db_user -d db_name -a -h localhost -f some.sql
Run Code Online (Sandbox Code Playgroud)
它在 Linux 中运行良好。
如何将上述转换为适用于 Windows Server 2012 - Windows 10 的 PowerShell 命令?
我试过:
SET "PGPASSWORD=db_pass" & "C:\Program Files (x86)\PostgreSQL\9.4\bin\psql.exe" -U postgres -a -d db_name -h localhost -f some.sql
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:“& 保留供将来使用...” - Windows 2012。
我有 GtkEntry 的对话窗口。我想在对话框窗口对用户可见后立即选择条目中的所有文本。我试过这个,但它不起作用,我看不到任何选择:
static void OnEntryShow(GtkWidget *entry, gpointer user_data)
{
gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1);
}
...
gtk_entry_set_text(GTK_ENTRY(myEntry), "text");
g_signal_connect(myEntry, "show", G_CALLBACK(OnEntryShow), NULL);
if (gtk_dialog_run(GTK_DIALOG(myDialog)) == GTK_RESPONSE_OK)
...
Run Code Online (Sandbox Code Playgroud)
在 GtkDialog 可见后,如何在 GtkEntry 中选择文本?
我想为我的应用程序中的所有小部件设置默认样式。我找到了这个页面并读到有set_default_style()功能。问题是我在任何地方都找不到它。
在女巫包/模块/类中我可以找到这个功能吗?有没有其他方法可以避免使用gtk.Widget.set_style()方法为每个小部件设置样式?
我有一个文件picture.jpg,我正在读它记忆
f = open('picture.jpg', 'rb')
pic = f.read()
f.close()
Run Code Online (Sandbox Code Playgroud)
如何将pic转换为gtk.gdk.Pixbuf?我知道有gdk_pixbuf_new_from_stream()但似乎缺少pyGTK:/
我有用python3和tkinter模块编写的简单应用程序.我想编写自定义小部件,需要发送自定义事件.
为什么下面的示例代码不起作用?
#!/usr/bin/env python3
from tkinter import *
class MyWidget(Listbox):
def __init__(self, master, *args, **kwargs):
super().__init__(master, *args, **kwargs)
# ===================
# error: _tkinter.TclError: only one event specification allowed
self.bind('<<ListboxSelect>>', lambda e: self.event_generate('MyEvent'))
# ===================
class App(Tk):
def __init__(self):
super().__init__()
w = MyWidget(self)
w.bind('MyEvent', lambda e: print('It\'s working'))
w.pack()
w.insert(END, 'ddddddd')
if __name__ == '__main__':
app = App()
app.mainloop()
Run Code Online (Sandbox Code Playgroud) 即时运行Linux,我想将一些手册页导入我的应用程序.
我想出了这个:
p = subprocess.Popen(('man %s' % manTopic,), shell = True, stdout = subprocess.PIPE)
stdout, stderr = p.communicate()
if stdout:
Run Code Online (Sandbox Code Playgroud)
但它不好,男人只显示第一页并阻止我的应用程序
如何使用Python获取手册页?
我试图将我的应用程序从 python2.7 pyGTK 切换到 Python3 和 pyGObject,并且很难将行附加到我的 Gtk.ListStore :/
这段代码:
#!/usr/bin/env python3
from gi.repository import Gtk
listStore = Gtk.ListStore(str)
itr = Gtk.TreeIter()
listStore.append(itr)
listStore.set_value(itr, 0, 'Its working')
Run Code Online (Sandbox Code Playgroud)
总是给我错误:
Traceback (most recent call last):
File "./test.py", line 7, in <module>
listStore.append(itr)
File "/usr/lib/python3/dist-packages/gi/overrides/Gtk.py", line 1017, in append
return self._do_insert(-1, row)
File "/usr/lib/python3/dist-packages/gi/overrides/Gtk.py", line 1008, in _do_insert
row, columns = self._convert_row(row)
File "/usr/lib/python3/dist-packages/gi/overrides/Gtk.py", line 850, in _convert_row
if len(row) != n_columns:
TypeError: object of type 'TreeIter' has no len()
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?如何将新行追加到 Gtk.ListStore 中?
我想为每个标签添加关闭按钮tkinter.ttk.Notebook.我已经尝试添加图像并对点击事件做出反应,但遗憾的BitmapImage是没有bind()方法.
我该如何修复此代码?
#!/usr/binenv python3
from tkinter import *
from tkinter.ttk import *
class Application(Tk):
def __init__(self):
super().__init__()
notebook = Notebook(self)
notebook.pack(fill=BOTH, expand=True)
self.img = BitmapImage(master=self, file='./image.xbm')
self.img.bind('<Button-1>', self._on_click)
notebook.add(Label(notebook, text='tab content'), text='tab caption', image=self.img)
def _on_click(self, event):
print('it works')
app = Application()
app.mainloop()
Run Code Online (Sandbox Code Playgroud)
image.xbm
#define bullet_width 11
#define bullet_height 9
static char bullet_bits = {
0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00
}
Run Code Online (Sandbox Code Playgroud) 我有 ttk.Notebook 类的笔记本小部件。在这个笔记本中,我添加了许多标签:
notebook.add(child=my_object, text='my tab')
如何获取选项卡对象而不是选项卡名称?
所以,有儿童词典。好的,带来下一个问题。
我真正想做的是在 Notebook 中操作活动选项卡的对象。所以我有这个:
notebook.children[notebook.select().split('.')[2]])
Run Code Online (Sandbox Code Playgroud)
但它看起来很丑。不幸的是, select() 返回的小部件名称与 children[] 中的小部件名称格式不完全相同。在这种情况下,是否有任何方法可以将一种格式可靠地转换为另一种格式,或者 split() 永远不会失败?
这是问题的演示:
#!/usr/bin/env python3
from tkinter import *
from tkinter.ttk import *
class App(Tk):
def __init__(self):
super().__init__()
notebook = Notebook(self)
notebook.add(child=Frame(notebook), text='tab1')
notebook.add(child=Frame(notebook), text='tab2')
notebook.add(child=Frame(notebook), text='tab3')
notebook.pack()
print('Tabs are: ', notebook.children.keys())
print('Active tab: ', notebook.select())
print(type(notebook.children[notebook.select().split('.')[2]]))
App().mainloop()
Run Code Online (Sandbox Code Playgroud) 我想在一个查询中删除2个表中的行,所以我这样做:
DELETE FROM form_questionnaire;
Run Code Online (Sandbox Code Playgroud)
这是从中删除所有行form_questionnaire但在其中留下行questionnaire.为什么行questionnaire,如果有不被删除ON DELETE CASCADE的form_questionnaire.questionnaire_id?
我的桌子
CREATE TABLE questionnaire(
id INTEGER AUTO_INCREMENT PRIMARY KEY NOT NULL,
content JSON,
creator VARCHAR(50) NOT NULL,
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE form_questionnaire(
form_id INTEGER,
questionnaire_id INTEGER,
FOREIGN KEY(form_id) REFERENCES form(id),
FOREIGN KEY(questionnaire_id) REFERENCES questionnaire(id) ON DELETE CASCADE
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)
数据库服务器
MySQL 5.7.21-20
python ×9
pygtk ×4
gtk ×3
tkinter ×3
gtk3 ×2
pygobject ×2
tk-toolkit ×2
bash ×1
c ×1
gtkentry ×1
linux ×1
manpage ×1
mysql ×1
powershell ×1
python-3.x ×1
sql ×1
subprocess ×1
xlib ×1