一、具体问题

如图所示,我编写了一个主窗口的程序(如下所示,有兴趣的可以自己复制后运行),发现需要先进入第一个窗口再进入主界面,这不符合逻辑。

代码区域(完整代码):

from tkinter import *

class WinGUI(Tk):
def __init__(self):
super().__init__()
self.__win() def __win(self):
self.title("小软件")
self.iconbitmap("icon.ico") # 设置图标 # 设置窗口大小、居中
width = 1024
height = 450
screenwidth = self.winfo_screenwidth()
screenheight = self.winfo_screenheight()
geometry = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
self.geometry(geometry)
self.resizable(width=False, height=False) if __name__ == "__main__":
win = WinGUI() # 创建Win对象
win.mainloop() # 启动应用程序的主事件循环

二、解决方案

尝试思路,由于我的代码量到达1000行+,开始以为是实例化了多个窗口导致,摸索了一个小时才发现,网上没有答案,问题确实比较隐蔽。经过排查,其实问题很简单,思路是应该先要设置窗口位置,再设置窗口名称、图标。

问题发生原因:下面这2行代码会事先使用系统默认的窗口生成位置(左上角某个位置)去创建窗口名称,图标。

    def __win(self):
self.title("小软件")
self.iconbitmap("icon.ico") # 设置图标

这样一来,解决方法自然很简单了,我把这【创建图标、窗口名称的2行代码】放到【创建位置的代码】之后就好了。

正确代码(完整代码)如下:

from tkinter import *

class WinGUI(Tk):
def __init__(self):
super().__init__()
self.__win() def __win(self):
# 设置窗口大小、居中
width = 1024
height = 450
screenwidth = self.winfo_screenwidth()
screenheight = self.winfo_screenheight()
geometry = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
self.geometry(geometry)
self.resizable(width=False, height=False)

self.title(
"小软件")
self.iconbitmap("icon.ico") # 设置图标
if __name__ == "__main__":
win = WinGUI() # 创建Win对象
win.mainloop() # 启动应用程序的主事件循环

动态演示:

疑难杂症(已解决) | 为什么出现python中tkinter创建界面需要一闪而过才进入主窗口?的更多相关文章

  1. 【已解决】Android ADT中增大AVD内存后无法启动:emulator failed to allocate memory 8

    [问题] 折腾: [已解决]Android ADT中增大AVD内存后无法启动:emulator failed to allocate memory 8 过程中,增大对应AVD的内存为2G后,结果无法启 ...

  2. 【已解决】Android ADT中增大AVD内存后无法启动:emulator failed to allocate memory

    [已解决]Android ADT中增大AVD内存后无法启动:emulator failed to allocate memory 结论是: 当前有个bug: 默认是通过 hw.ramSize=1024 ...

  3. python使用tkinter做界面之颜色

    python使用tkinter做界面之颜色       from tkinter import *colors = '''#FFB6C1 LightPink 浅粉红#FFC0CB Pink 粉红#DC ...

  4. [已解决]关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no encoding declared。

    想在python代码中输出汉字.但是老是出现SyntaxError: Non-ASCII character '\xe4' in file test.py on line , but no encod ...

  5. Python | 面试必问,线程与进程的区别,Python中如何创建多线程?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题第20篇文章,我们来聊聊Python当中的多线程. 其实关于元类还有很多种用法,比如说如何在元类当中设置参数啦,以及一 ...

  6. python中动态创建类

    class Foo(Bar): pass Foo中有__metaclass__这个属性吗?如果是,Python会在内存中通过__metaclass__创建一个名字为Foo的类对象(我说的是类对象,请紧 ...

  7. 【已解决】关于IDEA中 Tomcat 控制台打印日志中文乱码的解决

    在 Idea 上面使用 Tomcat 时,发现控制台打印信息的时候,出行中文乱码问题; 可以通过以下几种解决办法 1:在-Dfile.encoding=UTF-8 在vm中设置编码方式 2.然后从Fi ...

  8. Python中TKinter模块中的Label组件

    Python2.7.4      OS—W7x86 1. 简介 Label用于在指定的窗口中显示文本和图像.最终呈现出的Label是由背景和前景叠加构成的内容. Label组件定义函数:Label(m ...

  9. 解决windows下 Python中 matplotlib 做图中文不显示的问题

    在代码中填入以下两句即可 from pylab import mpl mpl.rcParams['font.sans-serif'] = [font_name] 如:mpl.rcParams['fon ...

  10. 【已解决】React项目中按需引入ant-design报错TypeError: injectBabelPlugin is not a function

    react项目中ant-design按需加载,使用react-app-rewired的时候报错 运行npm start或者yarn start报如下错误: TypeError: injectBabel ...

随机推荐

  1. lodash已死?radash库方法介绍及源码解析 —— 对象方法篇

    写在前面 主页有更多其他篇章的方法,欢迎访问查看. 本篇我们介绍radash中对象相关方法的使用和源码解析. assign:递归合并两个对象 使用说明 功能说明:类似于 JavaScript 的 Ob ...

  2. Windows pyinstaller wxPython pyecharts无法正常显示问题

    Windows pyinstaller wxPython pyecharts无法正常显示问题 最近遇到一个pyinstaller打包wxPython pyecharts无法显示的问题,pyechart ...

  3. 如果个人pc上要装不同社区版本的pycharm,安装时需要注意的一点

    pycharm下载地址[包含了目前发行的所有版本]:https://www.jetbrains.com/pycharm/download/other.html 选择指定的版本,点击 勾选uninsta ...

  4. go encoding/json 替代者

    https://github.com/json-iterator/go 可以替代官方包encoding/json 提升json编码和解码效率

  5. 通过 InnoSetup 美化安装界面

    InnoSetup 的美化相应的帖子也比较多,但是代码不是很全...所以我专门出了这篇文章来记录下这个美化过程.废话不多说,先上个成果: 前端er们可以直接下载 vue-nw-seed 这个分支,一键 ...

  6. Google,Baidu,Bing三大搜素引擎图片爬虫

    Google,Baidu,Bing三大搜素引擎图片爬虫 参考https://mp.weixin.qq.com/s/75QDjRTDCKzuM68L4fg5Lg 这个爬虫由ID为sczhengyabin ...

  7. 对于UITableView和UIImageView的DrawRect重写之后的影响

    一.继承 UITableView和UIImageView , 重写 DrawRect 方法,然后里面留空 ImageView @implementation DrawImageView - (void ...

  8. react自定义导航组件 路由参数

    为何需要自定义导航? 因为在项目中往往不是所有的声明式导航都是需要a标签完成,有时候可能需要别的标签,此时如果在需要的地方去写编程式导航就会有代码重复可能性,就在对于公共代码进行提取. 思路: 定义一 ...

  9. Python 潮流周刊#55:分享 9 个高质量的技术类信息源!

    大家好,我是猫哥,今天给大家分享几个高质量的技术类信息源. 本文分享的信息源都是周刊类型的,所谓周刊类,就是以固定每周的频率更新,每期分享很多精华内容的链接.它的特点是信息密度极高,可以节省你去查找信 ...

  10. NumPy 舍入小数、对数、求和和乘积运算详解

    舍入小数 在 NumPy 中,主要有五种方法来舍入小数: 截断 去除小数部分,并返回最接近零的浮点数.使用 trunc() 和 fix() 函数. 示例: import numpy as np arr ...