加载.py程序时不显示窗口(Jython,初学者)

时间:2013-09-17 15:15:25

标签: java python swing jython

我正在创建一个简单的聊天GUI。下面的代码加载没有错误,但我无法弄清楚如何使窗口显示,以便我实际上看到它正在工作。在使用类之前,它会自动显示(例如运行一个简单的“Hello,world!”应用程序)。我需要使用命令行吗?

感谢您的帮助 - 我是新手。

import javax.swing as swing

import java.awt as awt

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

class Login:

  def __init__(self):

    self.login = Login
    self.chatRoom = ChatRoom(self.login)

    self.loginMain = swing.JFrame("Welcome to J-Chat!")
    self.loginMain.contentPane.layout = awt.BorderLayout()
    self.loginMain.preferredSize = (300, 120)    
    self.loginMain.setLocationRelativeTo(null)
    self.loginMain.setDefaultCloseOperation(EXIT_ON_CLOSE)

    self.loginLabel = swing.JLabel("User Name: ")
    self.loginMain.contentPane.add(loginLabel)

    self.loginField = swing.JTextField(20)
    self.loginMain.contentPane.add(loginField)

    self.loginButton = swing.JButton("Login")
    self.loginMain.contentPane.add(loginButton)
    self.loginButton.actionPerformed = self.buttonClick

    self.mainWin.pack()
    self.mainWin.show()

  def buttonClick(self, event):

    self.chatRoom = ChatRoom.chatRoomMain(self.chatRoom, self.loginField.text)

2 个答案:

答案 0 :(得分:0)

您需要实际运行该类才能使用它。

在文件底部,尝试添加以下行:

login = Login()

那应该实例化并执行Login类。


更惯用的方法是将实例化包装在if块中:

if __name__ == '__main__':
    login = Login()

这将使Python仅在您从命令行直接运行文件时实例化Login类,并且如果您只是导入文件,则会避免实例化它。如果您想测试给定文件以确保其有效,但仍然能够导入并在程序中的其他位置重复使用它,这将非常有用。

答案 1 :(得分:0)

最简单的方法是在开始搜索时键入python.exe并打开属性,然后右键单击你的py程序复制并粘贴位置,然后clikc打开whithc和chosse / chosse默认并粘贴位置并单击python或python。 exe文件