Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何按常量因子放大此Gtk3对话框?_Python_User Interface_Gtk_Gtk3_Pygtk - Fatal编程技术网

Python 如何按常量因子放大此Gtk3对话框?

Python 如何按常量因子放大此Gtk3对话框?,python,user-interface,gtk,gtk3,pygtk,Python,User Interface,Gtk,Gtk3,Pygtk,我有这个代码在Gtk中创建我自己的密码对话框。我需要将它放大2-3倍,以便用于显示它。我该怎么做 #/usr/bin/env蟒蛇3 导入gi 导入系统 gi.要求_版本(“Gtk”、“3.0”) 从gi.repository导入Gtk,GLib 类入口对话框(Gtk.Dialog): def uuu init uuuu(self,labeltext=None): super() content=self.get\u content\u area() self.timeout\u id=None

我有这个代码在Gtk中创建我自己的密码对话框。我需要将它放大2-3倍,以便用于显示它。我该怎么做

#/usr/bin/env蟒蛇3
导入gi
导入系统
gi.要求_版本(“Gtk”、“3.0”)
从gi.repository导入Gtk,GLib
类入口对话框(Gtk.Dialog):
def uuu init uuuu(self,labeltext=None):
super()
content=self.get\u content\u area()
self.timeout\u id=None
vbox=Gtk.Box(方向=Gtk.orientation.VERTICAL,
间距=15,边距=30)
content.add(vbox)
如果labeltext为无:
labeltext=“请输入密码:”
label=Gtk.label(labeltext)
vbox.pack_start(标签,真,真,0)
hbox=Gtk.Box(间距=1)
self.entry=Gtk.entry()
self.entry.set_文本(“”)
self.entry.set_max_length(256)
self.entry.set_invisible_char(“•”)
self.entry.set_可见性(False)
hbox.pack_启动(self.entry,True,True,0)
self.show=Gtk.ToggleButton(label=“show”)
self.show.set_激活(False)
hbox.pack\u启动(self.show,True,True,0)
vbox.pack_start(hbox,True,True,0)
#self.entry.connect(“激活”,lambda x:print(“输入”))
self.show.connect(“切换”,self.on\u show\u切换)
self.add_按钮(
Gtk.STOCK\u取消,Gtk.ResponseType.CANCEL,
Gtk.STOCK_OK,Gtk.ResponseType.OK
)
self.set\u default\u响应(Gtk.ResponseType.OK)
self.entry.connect(“激活”,self.on\u entry\u enter)
def on_show_已切换(自身,按钮):
活动=按钮。获取活动()
self.entry.set_可见性(活动)
按钮。设置标签(“隐藏”如果活动,否则“显示”)
def on_entry_enter(自我,按钮):
self.activate_default()
def get_密码(自我):
返回self.entry.get_text()
def run_对话框(argv):
如果len(argv)==1:
win=EntryDialog()
elif len(argv)==2:
win=EntryDialog(argv[1])
其他:
打印(f“用法:{argv[0]}[]”,file=sys.stderr)
系统出口(2)
赢,全力以赴
结果=win.run()
如果结果==Gtk.ResponseType.OK:
打印(win.get_password())
其他:
系统出口(1)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
运行_对话框(sys.argv)

建议在IRC上使用
GDK_量表
环境变量。这适用于我的用例,但对于一般用途来说,这似乎是一个糟糕的解决方案。在我的情况下,我必须将我的程序更改为:

#!/usr/bin/env python3

import sys
import os

if __name__ == '__main__':
    scale = os.environ.get('GDK_SCALE', '1')
    scale = float(scale) * 2.5
    os.environ['GDK_SCALE'] = str(scale)

import gi


gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, GLib


class EntryDialog(Gtk.Dialog):
    def __init__(self, labeltext=None):
        super().__init__(title="Password", modal=True, focus_on_map=True)
        content = self.get_content_area()
        self.timeout_id = None
        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL,
                       spacing=15, margin=30)
        content.add(vbox)

        if labeltext is None:
            labeltext = "Please enter a password:"
        label = Gtk.Label(label=labeltext)
        vbox.pack_start(label, True, True, 0)

        hbox = Gtk.Box(spacing=1)
        self.entry = Gtk.Entry()
        self.entry.set_text("")
        self.entry.set_max_length(256)
        self.entry.set_invisible_char('•')
        self.entry.set_visibility(False)
        hbox.pack_start(self.entry, True, True, 0)
        self.show = Gtk.ToggleButton(label="show")
        self.show.set_active(False)
        hbox.pack_start(self.show, True, True, 0)
        vbox.pack_start(hbox, True, True, 0)

        #self.entry.connect("activate", lambda x: print("Enter"))
        self.show.connect("toggled", self.on_show_toggled)
        self.add_buttons(
            Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
            Gtk.STOCK_OK, Gtk.ResponseType.OK
        )
        self.set_default_response(Gtk.ResponseType.OK)
        self.entry.connect("activate", self.on_entry_enter)

    def on_show_toggled(self, button):
        active = button.get_active()
        self.entry.set_visibility(active)
        button.set_label("hide" if active else "show")

    def on_entry_enter(self, button):
        self.activate_default()

    def get_password(self):
        return self.entry.get_text()


def run_dialog(argv):
    if len(argv) == 1:
        win = EntryDialog()
    elif len(argv) == 2:
        win = EntryDialog(argv[1])
    else:
        print(f"Usage: {argv[0]} [<prompt text>]", file=sys.stderr)
        sys.exit(2)
    win.show_all()
    result = win.run()
    if result == Gtk.ResponseType.OK:
        print(win.get_password())
    else:
        sys.exit(1)


if __name__ == '__main__':
    run_dialog(sys.argv)
#/usr/bin/env蟒蛇3
导入系统
导入操作系统
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
scale=os.environ.get('GDK_scale','1')
比例=浮动(比例)*2.5
操作系统环境['GDK_SCALE']=str(SCALE)
导入gi
gi.要求_版本(“Gtk”、“3.0”)
从gi.repository导入Gtk,GLib
类入口对话框(Gtk.Dialog):
def uuu init uuuu(self,labeltext=None):
super()
content=self.get\u content\u area()
self.timeout\u id=None
vbox=Gtk.Box(方向=Gtk.orientation.VERTICAL,
间距=15,边距=30)
content.add(vbox)
如果labeltext为无:
labeltext=“请输入密码:”
label=Gtk.label(label=labeltext)
vbox.pack_start(标签,真,真,0)
hbox=Gtk.Box(间距=1)
self.entry=Gtk.entry()
self.entry.set_文本(“”)
self.entry.set_max_length(256)
self.entry.set_invisible_char(“•”)
self.entry.set_可见性(False)
hbox.pack_启动(self.entry,True,True,0)
self.show=Gtk.ToggleButton(label=“show”)
self.show.set_激活(False)
hbox.pack\u启动(self.show,True,True,0)
vbox.pack_start(hbox,True,True,0)
#self.entry.connect(“激活”,lambda x:print(“输入”))
self.show.connect(“切换”,self.on\u show\u切换)
self.add_按钮(
Gtk.STOCK\u取消,Gtk.ResponseType.CANCEL,
Gtk.STOCK_OK,Gtk.ResponseType.OK
)
self.set\u default\u响应(Gtk.ResponseType.OK)
self.entry.connect(“激活”,self.on\u entry\u enter)
def on_show_已切换(自身,按钮):
活动=按钮。获取活动()
self.entry.set_可见性(活动)
按钮。设置标签(“隐藏”如果活动,否则“显示”)
def on_entry_enter(自我,按钮):
self.activate_default()
def get_密码(自我):
返回self.entry.get_text()
def run_对话框(argv):
如果len(argv)==1:
win=EntryDialog()
elif len(argv)==2:
win=EntryDialog(argv[1])
其他:
打印(f“用法:{argv[0]}[]”,file=sys.stderr)
系统出口(2)
赢,全力以赴
结果=win.run()
如果结果==Gtk.ResponseType.OK:
打印(win.get_password())
其他:
系统出口(1)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
运行_对话框(sys.argv)
注意,我必须确保在导入
gi
包之前设置了环境变量